从 .bashrc 启动 tmux 时会忽略 .profile 和 .bash_profile?

从 .bashrc 启动 tmux 时会忽略 .profile 和 .bash_profile?

当我通过 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”?

  1. 尝试输入“ logout”。如果 shell 终止,则它是一个登录 shell。如果它说它不是登录 shell,那么它就不是。
  2. 输入“ ps -fp$$”。 (如果您ps需要不同的参数,请进行修改,以执行您需要的任何操作,以获取当前 shell 的完整/长进程信息列表——“ –p”表示“查看这个流程”,而“ $$”是 shell 的 PID。)如果进程名称以破折号(连字符)开头,如“ -bash”或“ -csh”,则它就是登录 shell;否则,则不是。(可能。)

… 因此,在 下运行的 shelltmux将不会查看.bash_profile;它只会查看.bashrc。因此,将要执行的命令从.bash_profile移到.bashrc,或将它们放在两个地方,或将一个源设为另一个源。

相关内容