Mac OS Xが〜/ .bashrcをソースしないのはなぜですか?[複製]


95

この質問にはすでに答えがあります:

命令がこれに似ている理由を考え出す多くの人々を見つけました:

Put X to your ~/.bashrc and you can do Y

動作しません。

Mac OS Xのbashのスタートアップファイル(またはMacのBash自体)は、ログインシェルまたはMac OS Xのターミナルアプリのようなウィンドウシステムから生成されたシェルで〜/ .bashrcファイルをソースにしないことが常に判明しています

私が以前に作業したことのあるBashを使用する他のすべてのUnixライクシステムがこれを行ったのに、なぜこれなのですか?

PS:

私はBash自体がスタートアップファイルについて言っていることを見つけました(これは役立つかもしれません):

Bashが対話型ログインシェルとして、または--loginオプションを使用した非対話型シェルとして呼び出されると、最初にファイル/ etc / profileが存在する場合、そのファイルからコマンドを読み取って実行します。そのファイルを読み取った後、〜/ .bash_profile、〜/ .bash_login、および〜/ .profileをこの順序で探し、最初に存在して読み取り可能なコマンドを読み取って実行します。--noprofileオプションは、この動作を禁止するためにシェルを起動するときに使用できます。

ソース:http : //www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files


私はそれ~/.bash_profileが実行されたが、実行されなかったことにも気づいた~/.bashrc。奇妙な。
igaurav 16

回答:


90

OSXでは、ターミナルはデフォルトでログインセッションを開始するため、.bash_profileなどを読み取ります(名前とパスワードを要求するGUIログインプロセスはシェルスクリプトを使用せず、launchdとワークスペースからすべて実行されるシェルを開始しません)

他のUnicesでは、xtermはデフォルトで非ログインシェルを実行するため、ログイン時にパスワードなどを提示するスクリプトとして.bashrcを読み取り、ログインセッションを呼び出し、すべての端末がこのサブプロセスであり、シェル環境を継承します。

あなたが言及したGNU文書から

対話型の非ログインシェルとして呼び出されます

ログインシェルではないインタラクティブシェルが起動すると、Bashは〜/ .bashrcからコマンドを読み取り、実行します(そのファイルが存在する場合)。--norcオプションを使用すると、これを禁止できます。--rcfileファイルオプションは、Bashに〜/ .bashrcではなくfileからコマンドを強制的に読み取らせて実行させます。

したがって、通常、〜/ .bash_profileには次の行が含まれます。

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi 

ログイン固有の初期化の後(または前)。


7
Unicies = Unixes?
ポールBrewczynski 14

8
よく私が意味した-私は学校でラテン語を傾いたので複数形を
削除し

8
...そして、3番目のフォーム「Unixen」(私はUnicesを好むが)
-earcam

7
4番目の「ユニコーン」
...-

8
nullフォーム、つまり「
e官

19

bashのみ読み込む.bashrcために非ログインシェル:

ログインシェルではないインタラクティブシェルが開始されると、bashは〜/ .bashrcからコマンドを読み取り、実行します(そのファイルが存在する場合)。--norcオプションを使用すると、これを禁止できます。--rcfile fileオプションは、bashに〜/ .bashrcの代わりにfileからコマンドを強制的に読み取り、実行させます。

ターミナルはbashログインシェルとして起動するwため(bashインスタンスがとして実行されることを確認するために実行-bash)、.bashrc自動的に読み込まれることはありません。


つまり、Mac OS XのTerminaアプリは常にbashの「ログイン」インスタンスを作成するということです。どうして ?本当にログインしない場合。(GUIから以前にログインしています)
ポール・ブリュージンスキー14

他のUNIXシステムが〜/ .bashrcを読み取るのはなぜですか?
ポール・ブルージンスキー14

3
ここでだれも、Appleが下した設計上の決定を説明する立場にありません。どちらの側も簡単に議論できますが、これも助けにはなりません。だからそれがあるとして、それを受け入れることは、おそらく最良の選択肢である
nohillside

まあそれはそれはあなたがそれがログインできませんので、その後Xを実行するシェルを実行することによって開始X11でのログイン、ベースのUnixであるので、あなたはあなたのようにシェルを実行する最初の時間です
user151019

@PaulBrewczynski Well Linuxには、.bash_profileから.bashrcへの呼び出しがあります。
ポールステリアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.