- 系统:macOS 10.12
- Tmux 版本:2.6
作为 macports 用户,我在/opt/local/bin
的开头有PATH
。但是,启动 时tmux
,它使用/bin/bash
而不是/opt/local/bin/bash
,实际上,SHELL
变量也指向那里。这让我很困惑,并且.bashrc
由于版本过时而导致某些设置中断。
我知道我可以将路径设置为 tmux 的默认 shell set-option -g default-shell
,但我.tmux.conf
在不同的系统上使用我的,所以它应该与操作系统无关,只需使用执行时获得的 shell 即可bash
。
我的所有设置都在und中.bashrc
,并且此文件的源码在那里,所以我的应该可以使用。.bash_login
.bash_profile
PATH
tmux
我该如何解决这个问题?
似乎SHELL
总是这样/bin/bash
,不知道为什么。我的终端配置为/opt/local/bin/bash -l
在启动时启动。
答案1
这是什么man 1 tmux
在 Linux 中是这样说的default-shell
。我期望tmux
在 macOS 中的行为类似:
default-shell path
default-command
指定默认 shell。当选项设置为空时,这将用作新窗口的登录 shell ,并且必须是可执行文件的完整路径。启动时尝试从环境变量的第一个合适的 shell(由、 或返回的 shell)tmux
中设置默认值。当用作登录 shell时,应配置此选项。SHELL
getpwuid(3)
/bin/sh
tmux
如您所见,这些方法均未使用$PATH
。此外,bash
手动的:
SHELL
此环境变量保存了 shell 的完整路径名。如果在 shell 启动时未设置此环境变量,Bash 将为其分配当前用户登录 shell 的完整路径名。
不管怎样,重要的是你的登录 shell,而不是/opt/local/bin/bash
。你可以考虑SHELL
在$BASH
你的 中用覆盖.bashrc
:
SHELL="$BASH"
注意:我还没有测试过它的副作用。它有一个特点(至少在我的 Kubuntu 中)。如果tmux
已经为您的用户运行,则更改为SHELL
不会影响其他调用。这是因为其他tmux
调用与第一个调用一起工作,并且它是处理所有事情的tmux
第一个调用(我可以用 看到这一点);当您调用另一个调用时,它的环境不会改变。tmux
pstree
但是,无论等如何,这种调用方式tmux
都应该尊重您的要求:$PATH
$SHELL
tmux new-session bash