Псевдонимы и тмуксы

12

Псевдонимы определены в .bash_aliasesи .bashrcне работают в tmux.

Можно ли это изменить в какой-то конфигурации, чтобы псевдонимы работали tmux?

xralf
источник
2
Вы уверены, что проблема в tmux? Я пользуюсь tmux около года и не видел проблем с псевдонимами. Попробуйте добавить set -xв начале вашего .bashrcи запустить в tmuxкоманде source ~/.bashrc. Может быть, вы найдете какие-либо ошибки, и это решит вашу проблему.
Раш

Ответы:

9

tmuxпо умолчанию запускает оболочку входа в систему, поэтому ~/.bashrcне будет выполняться (которая затем будет источником ~/.bash_aliases. Вам необходимо получить исходный код ~/.bashrcиз вашего ~/.bash_profile. См. INVOCATIONраздел man bash.

Крис Даун
источник
19

( Ответ Криса Дауна имеет правильное объяснение, но не хороший обходной путь)

Ваша проблема проистекает из комбинации ошибки проектирования bash и ошибки проектирования tmux.

По умолчанию tmux запускает оболочку входа в каждое окно. Это не имеет никакого смысла: если вы установили tmux в качестве оболочки входа в систему, вам нужно установить default-commandпараметр, отличный от tmux; и если вы не установили tmux в качестве оболочки входа в систему, вам нужно установить default-commandопцию, чтобы избежать запуска оболочки входа внутри tmux. Так что надавите на это, ~/.tmux.confчтобы tmux запустил обычную оболочку:

set-option -g default-command $SHELL

Тогда ваш .bashrcбудет прочитан. Есть еще одна проблема с bash, которая не имеет значения, если вы настроите tmux, как рекомендовано выше, но возникнет снова, если вы войдете в текстовый режим (в текстовой консоли или через SSH). Bash читает ~/.bash_profileв оболочках входа в систему и ~/.bashrcв интерактивных оболочках, но только если они не являются оболочками входа в систему. Чтобы прочитать ~/.bashrcтакже в оболочках входа в систему, если они являются интерактивными, добавьте это в свой ~/.bash_profile:

case $- in *i*) . ~/.bashrc;; esac
Жиль "ТАК - перестань быть злым"
источник
+! Последняя часть потребовалась, чтобы исправить мои псевдонимы и подсказку PS1, но это так!
Майкл Даррант