web-dev-qa-db-ja.com

OS Xが.profileファイルではなく.bash_profileを読み取るようにする方法

「.profile」ファイルにカスタマイズ別名コマンドを入れないで、私は非常に多くの提案を読みました。むしろ、自分用に.bash_profileを作成し、エイリアスなどを追加します。

しかし、新しいターミナルを開いたときに、.bash_profileのみがある場合、OS Xはそれに記載されているコマンドをエクスポート/ソースしません。 .bash_profileを手動で入手する必要があります。

.profileファイルを作成すると、新しいターミナルを開くと、.profileのすべてのコマンドが実行され、すぐに使用できるようになります。

理解を助けてください、それはどのように機能しますか?また、.bashrc/.profile/.bash_profileファイルを使用する場合。

ありがとう!

36
cherryhitech

OS Xに付属のマニュアルページによると:

... ~/.bash_profile~/.bash_login、および~/.profileをこの順序で探します。存在し、読み取り可能な最初のコマンドからコマンドを読み取り、実行します。 --noprofileオプションは、シェルの起動時にこの動作を禁止するために使用できます。

~/.profile~/.bash_profileも読み取り可能でない場合、最後の手段として~/.bash_loginのみを読み取る必要があります。

すべてのOS Xシステムで、~/.bash_profileを次のように設定しています。

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

期待どおりに~/.bashrcファイルをbashに読み取らせるために、OS Xでこれを行うことを強くお勧めします。

73

端末のシェルがデフォルトでbashではなくshになっている可能性もあります。これを最初に確認できます:

$ echo $Shell
/bin/tcsh

これをbashに変更するには、[ターミナル]-> [設定]-> [スタートアップ]タブに移動し、[シェルで開く:]を[デフォルトログインシェル]から[コマンドおよび値/ bin/bash]に変更します。

または、コマンドプロンプトで次のコマンドを実行して、デフォルトのシェルを変更できます。

chsh -s bin/bash

これらのいずれかを実行した後、新しいシェルウィンドウを開くと、.bash_profileが取得されます。

26
Matt S

Bashは、Bashのマニュアルページに記載されているように、最初に/etc/profileファイルを探すことに注意してください。

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

3
Steve Benner