tmux
似乎会覆盖我的默认 bash 行为。假设export someDir=/path/to/it
,那么在我的 shell 中
- 按 Tab 键
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
可能会覆盖我的完成设置。complete
在普通 shell 中点击只会列出 2 个 git 包装器。tmux
显示了很多。
答案1
我没有使用 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,例如。经过
set -g default-command "/bin/bash"
在.tmux.conf