中定义的别名在.bash_aliases
和.bashrc
中不起作用tmux
。
可以在某些配置中更改此设置,以便别名在 下工作吗tmux
?
答案1
(克里斯·唐的回答有正确的解释,但不是一个好的解决方法)
您的问题源于 bash 设计错误和 tmux 设计错误的组合。
默认情况下,tmux 在每个窗口中启动一个登录 shell。这没有任何意义:如果您已将 tmux 设置为登录 shell,则需要将该default-command
选项设置为 tmux 以外的其他选项;如果您尚未将 tmux 设置为登录 shell,则需要设置选项default-command
以避免在 tmux 内启动登录 shell。因此,将以下内容放入您的文件中~/.tmux.conf
以告诉 tmux 启动普通 shell:
set-option -g default-command $SHELL
然后你的遗嘱.bashrc
将被阅读。 bash 还有另一个问题,如果您按照上面的建议配置 tmux,这个问题并不重要,但如果您以文本模式(在文本控制台或通过 SSH)登录,这个问题就会再次出现。 Bash~/.bash_profile
在登录 shell 和交互式 shell 中读取,~/.bashrc
但前提是它们不是登录 shell。~/.bashrc
如果还想在登录 shell 中读取它们(如果它们是交互式的),请将其添加到您的~/.bash_profile
:
case $- in *i*) . ~/.bashrc;; esac
答案2
tmux
默认情况下会启动一个登录 shell,因此~/.bashrc
不会被执行(随后会从 中获取源~/.bash_aliases
。您需要~/.bashrc
从您的 中获取源~/.bash_profile
。请INVOCATION
参阅man bash
.