web-dev-qa-db-ja.com

bashrcまたはbash_profile?

2つのbashログインスクリプトの違いを知っています。

.bashrcは、「非ログイン」シェルによってのみ実行されます。

.bash_profile(または.bash_loginまたは.profile)は、「ログイン」シェルによって実行されます。

ログインのみの実行に適したものの良い例がありますか?私はそれらを.bash_profileにしか入れませんが、.bashrcでは本当に意味がありませんか?

(私たちのほとんどは.bashrcから.bash_profileのソースを知っているので、反対の質問にはあまり意味がないようです...)

49
Don Faulkner

.bashrcは非ログインシェル用であるため、画面にエコーするコマンドは避けます。また、.bashrcのechoステートメントによってsftpコマンドとrsyncコマンドが失敗する(そして、おそらくscpコマンドも)経験することがあります。

# Print some information as we log in
# -s: OS Name -n: Node name -r: OS Release
uname -snr
uptime

また、通常、非対話型シェルからssh-agentを実行しません。 .bash_profileにあります。

if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi
24

By風は、.bashrcに決して入れてはならないことの良い例です。

それ以外の場合は、「仮想端末」の1つ1つで再帰的に実行されます;-)

あなたはそれを試すことができますが、それはちょっと楽しいです。

なぜそれを.profileに配置するので、byobu(実際には画面のちょうどラッパーです)は、ログイン時に一度だけロードされます。また、ビオブ自体は、新しいインタラクティブなbashセッションを開始できます。

8
Ralf