web-dev-qa-db-ja.com

.bashrcからtmuxを起動するときに.profileと.bash_profileは無視されますか?

Ubuntu 12.04サーバーインスタンスにSSHで接続するときに、.profileをソースにする際に問題が発生しました。私の.bashrcは、最後に次のことを行います。

if [[ "$TERM" != "screen-256color" ]]
then
   tmux attach-session -t "$USER" || tmux new-session -s "$USER"
   exit
fi

そのコードブロックをコメントアウトしてsshで再度ログインすると、〜/ .profileファイルは期待どおりにソースされます。 〜の下に.bash_profileまたは.bash_loginがないため、〜/ .profileが読み取られなくなります。実験として.profileの名前を.bash_profileに変更しても、ファイルはソースになりませんでした。

なぜそれが起こっているのか誰かが推測していますか?すべてを.bashrcに詰め込むこともできますが、.profileがソースされていない理由を知りたいと思います。

4
glitch

ターミナルを開いたときに〜/ .bash_profileがソースされないのはなぜですか? 「AskUbuntu」で説明したように、tmuxで実行されているシェルはログインシェルではありません。

シェルが「ログインシェル」であるかどうかを確認するにはどうすればよいですか?

  1. logout」と入力してみてください。シェルが終了した場合、それはログインシェルでした。ログインシェルではないと表示されている場合は、そうではありません。
  2. ps -fp$$」と入力します。 (psが異なる引数を取る場合は、現在のシェルのプロセス情報の完全/長いリストを取得するために必要なことをすべて実行するように変更します-「–p」は「 this process」、および「$$」はシェルのPIDです。)プロセス名がダッシュ(ハイフン)で始まる場合、 「-bash」または「-csh」のように、これはログインシェルです。そうでなければ、そうではありません。 (多分。)

…したがって、tmuxで実行されているシェルは.bash_profileを参照しません。 .bashrcのみを調べます。したがって、実行するコマンドを.bash_profileから.bashrcに移動するか、両方の場所に配置するか、一方のソースをもう一方のソースにします。

8
Scott