tmux
似乎覆盖了我的默认 bash 行为。假设export someDir=/path/to/it
,那么在我的 shell 中
- 点击 tab on
cd $someDir
会自动添加一个前斜杠cd $someDir/
.tmux
它什么都不做,并打印$someDir
(字面意思)。 - 点击选项卡
cd $someDir/
列出内容。在tmux
它上面展开变量。只有两个选项卡显示内容。
我仔细检查了两者都在运行 Bash,如果相关的话,这是我的配置:
set -g status-style bg=black
set -g status-style fg=red
set-window-option -g xterm-keys on
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
如何重现原始行为?
更多信息
@Kusalananda 的评论让我觉得这tmux
可能会覆盖我的完成设置。在普通shell中点击complete
只会列出 2 个 git 包装器。tmux
显示一吨。
我没有使用 tmux,但我发现(惊恐地)是它重新启用了 bash 的“可编程完成”,我早就在其中注释掉了
/etc/bash.bashrc
——因此你观察到了令人费解的行为。那是因为 tmux 将 bash 作为登录 shell 执行(
argv[0]
设置为-bash
),这导致它先获取源/etc/profile
然后再获取/etc/profile.d/bash_completion.sh
.你也有选择:
.bash_profile
a) 通过编辑和在登录和非登录 shell 中使完成行为成为您喜欢的.bashrc
b) 说服 tmux 不要运行登录 shell,例如。经过
在
.tmux.conf