防止目录变量扩展

防止目录变量扩展

tmux似乎会覆盖我的默认 bash 行为。假设export someDir=/path/to/it,那么在我的 shell 中

  1. 按 T​​ab 键cd $someDir会自动添加一个前斜杠,cd $someDir/tmux它不执行任何操作,并且会打印$someDir(逐字打印)。
  2. 点击选项卡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_profilea) 通过编辑和使完成行为成为您在登录和非登录 shell 中喜欢的行为.bashrc

b) 说服 tmux 不要运行登录 shell,例如。经过

set -g default-command "/bin/bash"

.tmux.conf

相关内容