Command-Line

別名和 tmux

  • April 24, 2015

.bash_aliases中定義的別名.bashrctmux.

這可以在某些配置中進行更改,以便別名在 下工作tmux嗎?

tmux預設情況下會啟動一個登錄 shell,因此不會被執行(~/.bashrc隨後~/.bash_aliases~/.bashrc~/.bash_profile.INVOCATION``man bash

克里斯唐的答案有正確的解釋,但不是一個好的解決方法)

您的問題源於 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 和~/.bashrc互動式 shell,但前提是它們不是登錄 shell。~/.bashrc如果它們是互動式的,還要在登錄 shell 中讀取,請將其添加到您的~/.bash_profile

case $- in *i*) . ~/.bashrc;; esac

引用自:https://unix.stackexchange.com/questions/38402