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がソースされていない理由を知りたいと思います。
ターミナルを開いたときに〜/ .bash_profileがソースされないのはなぜですか? 「AskUbuntu」で説明したように、tmux
で実行されているシェルはログインシェルではありません。
シェルが「ログインシェル」であるかどうかを確認するにはどうすればよいですか?
- 「
logout
」と入力してみてください。シェルが終了した場合、それはログインシェルでした。ログインシェルではないと表示されている場合は、そうではありません。- 「
ps -fp$$
」と入力します。 (ps
が異なる引数を取る場合は、現在のシェルのプロセス情報の完全/長いリストを取得するために必要なことをすべて実行するように変更します-「–p
」は「 this process」、および「$$
」はシェルのPIDです。)プロセス名がダッシュ(ハイフン)で始まる場合、 「-bash
」または「-csh
」のように、これはログインシェルです。そうでなければ、そうではありません。 (多分。)
…したがって、tmux
で実行されているシェルは.bash_profile
を参照しません。 .bashrc
のみを調べます。したがって、実行するコマンドを.bash_profile
から.bashrc
に移動するか、両方の場所に配置するか、一方のソースをもう一方のソースにします。