回答:
.bashrc
スクリプトで.bash_profile
はありません。これらはbash
、次の2つの方法のいずれかで実行されるたびに取得される構成ファイルです。
bashのmanページのINVOCATIONセクションが関連しています。
ログインシェルは、その最初の引数がゼロの文字であるものである
-
と開始、または1つ--login
のオプション。インタラクティブシェルは、一つには、非オプションの引数なしとせずに開始され
-c
、その標準入力と誤差によって決定されるように、両方の(端子に接続されるオプションisatty(3))
、または一方がで開始します-i
オプション。PS1が設定され、$-
含まれi
ている場合bash
、対話型であり、シェル・スクリプトを可能にしますまたは、この状態をテストするためのスタートアップファイル。次の段落で
bash
は、スタートアップファイルの実行方法について説明します。いずれかのファイルが存在するが読み取ることができない場合、bashはエラーを報告します。下後述のようにチルダは、ファイル名に展開されている チルダ展開でEXPANSIONの セクション。bashが対話型ログインシェルまたは
--login
オプション付きの非対話型シェルとして呼び出された/etc/profile
場合、ファイルが存在する場合、最初にfileからコマンドを読み取って実行します 。そのファイルを読んだ後、それは探し~/.bash_profile
、~/.bash_login
、および~/.profile
、そのためには、および読み込み、存在し、読み取り可能である最初のものから実行するコマンドを。--noprofile
シェルは、この動作を抑制するために開始されたときにオプションを使用することができます。ログインシェルが終了すると、bashはfileからコマンドを読み取り、実行します(
~/.bash_logout
存在する場合)。場合は、対話型ログインシェルではありませんシェルが起動され、bashはからコマンドを読み込み、実行し
~/.bashrc
、そのファイルが存在する場合は、。--norc
オプションを使用すると、これを禁止できます。この--rcfile file
オプションは、bashにの代わりにファイルからコマンドを強制的に読み取り、実行させます~/.bashrc
。
あなたは彼らがコマンドラインスイッチを介してロードされるときに制御、できる--norc
と--noprofile
。また、--rcfile
スイッチを使用してロードされる場所をオーバーライドすることもできます。
他の人が述べたように、source <file>
コマンドの使用またはコマンドの使用により、これらのファイルがどのようにロードされるかを模倣できます. <file>
。
この機能を次のように考えるのが最善です。
このトピックはたまに出てくるように見えるので、呼び出すさまざまな方法とbash
その結果のチートシートを以下に示します。注:「sourced $ HOME / .bashrc」および「sourced」というメッセージを追加しました。 $ HOME / .bash_profile "をそれぞれのファイルに追加します。
基本的な呼び出し
bash -i
$ bash -i
sourced /home/saml/.bashrc
bash -l
$ bash -l
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash -il -or- bash -li
$ bash -il
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash -c "..cmd .."
$ bash -c 'echo hi'
hi
注:-c
スイッチがどちらのファイルもソースしていないことに注意してください!
設定ファイルの読み取りを無効にする
bash --norc
$ bash --norc
bash-4.1$
bash --noprofile
$ bash --noprofile
sourced /home/saml/.bashrc
bash --norc -i
$ bash --norc -i
bash-4.1$
bash --norc -l
$ bash --norc -l
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash --noprofile -i
$ bash --noprofile -i
sourced /home/saml/.bashrc
bash --noprofile -l
$ bash --noprofile -l
bash-4.1$
bash --norc -i-または-bash --norc -l
$ bash --norc -c 'echo hi'
hi
bashを呼び出すより難解な方法
bash --rcfile $ HOME / .bashrc
$ bash -rcfile ~/.bashrc
sourced /home/saml/.bashrc
bash --norc --rcfile $ HOME / .bashrc
$ bash --norc -rcfile ~/.bashrc
bash-4.1$
これらは失敗しました
bash -i -rcfile〜/ .bashrc
$ bash -i -rcfile ~/.bashrc
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash: /home/saml/.bashrc: restricted: cannot specify `/' in command names
bash -i -rcfile .bashrc
$ bash -i -rcfile .bashrc
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash: .bashrc: command not found
おそらく他にもありますが、ポイントを得ることができれば幸いです...
最後に、このトピックに夢中になっていて、このトピックの詳細を読んだり調べたりしたい場合は、Bash初心者ガイド、特にセクション1.2をご覧になることを強くお勧めします。ボーンアゲインシェルの利点。その下の「1.2.2.1。呼び出し」から「1.2.2.3.3。対話型シェルの動作」までのさまざまなサブセクションでは、呼び出すことができるさまざまな方法の低レベルの違いについて説明していますbash
。
.bash_profile
は、をソースするための行を含むこと.bashrc
です。しかし、私はそれがセットアップの非常に典型的なものであると信じています。
.bashrc
で.bash_profile
はありません。私見は、bashの初期化中、または変更を適用する必要がある場合に明示的にソースされる特定の目的のスクリプトです。構成ファイルから期待どおりにbash環境(変数、関数、エイリアスなど)を構成するだけではありません。一般的なスクリプトのように、あらゆるアクションを実行できます。たとえば、バックグラウンドタスクなどのさまざまなアクションを開始したり、ログレコードを書き込んだり、いくつかのプログラムを初期化したりできます。
他の応答に加えて、必要な場合、これらの構成ファイルの先頭にシバンを置くことを禁止するものはないことに注意してください。
シバンは通常のコメントと同じように処理されるため、シェルを調達しても問題はありません。つまり無視されます。
これは、構文の強調表示を使用して、ファイルで使用されているプログラミング言語を把握しているエディターに役立ちます。
ただし、一部のエディターvim
は、後者のモードラインのような代替方法を提供します。つまり、あなたはいつもの末尾にモードラインを置くことができます~/.bashrc
し、~/.bash_profile
そうのように:
...
<code in ~/.bashrc>
...
# vim: ft=sh :
.bash_profile
ShellCheckからの推奨事項の最初にシバンを追加することに関してです。