当我通过 SSH 连接到 Ubuntu 12.04 服务器实例时,获取 .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 没有被引用。
答案1
正如所讨论的为什么打开终端时没有获取 ~/.bash_profile 的源代码?在“询问 Ubuntu”上,运行的 shelltmux
不是登录 shell。
如何判断一个 shell 是否是“登录 shell”?
- 尝试输入“
logout
”。如果 shell 终止,则它是一个登录 shell。如果它说它不是登录 shell,那么它就不是。- 输入“
ps -fp$$
”。 (如果您ps
需要不同的参数,请进行修改,以执行您需要的任何操作,以获取当前 shell 的完整/长进程信息列表——“–p
”表示“查看这个流程”,而“$$
”是 shell 的 PID。)如果进程名称以破折号(连字符)开头,如“-bash
”或“-csh
”,则它就是登录 shell;否则,则不是。(可能。)
… 因此,在 下运行的 shelltmux
将不会查看.bash_profile
;它只会查看.bashrc
。因此,将要执行的命令从.bash_profile
移到.bashrc
,或将它们放在两个地方,或将一个源设为另一个源。