我正在尝试从屏幕移动到 tmux(最终在 byobu 中使用 tmux)。但是,我有一个严重的问题是没有应用环境变量,尤其是 PS1。它们都不会被复制到会话(或窗口)环境中。我发现这个似乎相关的线程:
但是,当我这样做时,我实际上可以看到所有正确的变量
:show-environment -g
但是它们都没有被转移到会话环境中,所以当我这样做时我什么也看不到
:show-environment
我的文件中确实有正确的update-environment
声明~/.tmuxrc
:
# start a non-login shell by default for each new window
set -g default-command 'bash'
# Prefix is C-a like in screen
unbind C-b
set -g prefix C-a
# Carry over the PS1
set-option -ga update-environment "PS1"
坦率地说,这一切对我来说似乎都是一团糟。我可以看到从每个屏幕的干净会话开始的好处,但在大多数情况下,这似乎很痛苦。我导出了我打算在子流程中使用的变量,例如 Python virtualenvwrapper 函数,并期望它们可用。
有没有办法禁用这种行为?如果没有,我应该如何尝试将我的 PS1 变量转移到 tmux?
编辑 2013 年 11 月 13 日
我意识到删除第一行 ( default-command bash
)确实会继承所有环境变量。但是,我真的不希望 tmux 的每个新屏幕都作为登录 shell 启动。例如,我在登录 shell 中特别声明了我的 PS1 变量,这样每当我打开一个新屏幕时它就不会被覆盖。
根据以下帖子,tmux 中的每个新屏幕都应作为非登录 shell 启动: https ://superuser.com/questions/614277/profile-and-bash-profile-ignored-when-starting-tmux-from- .bashrc
为什么默认情况下不会发生这种情况?