Как я могу заставить tmux tell bash отобразить * логическую * версию текущего каталога в недавно открытых окнах?

Задний план

Я использую tmux 2.0, Ubuntu 14.04.2 LTS в VirtualBox.

Чтобы заставить tmux открывать новые окна с тем же путем, что и текущее окно, я добавил эту строку в файл ~/.tmux.conf :

 bind c new-window -c "#{pane_current_path}" 

Обратите внимание, что в tmux, если я cd из дома в подкаталог через символическую ссылку , тогда проверьте pwd и pwd -P я получаю:

 ~$ cd pythons ~/pythons$ # An awesome prompt ~/pythons$ pwd # According to "man pwd" this shows the "logical" path /home/qiime/pythons ~/pythons$ pwd -P # and this shows the "physical" path /media/sf_Google_Drive/Home/Programs/Pythons 

Проблема в

Если я открою новое окно tmux в ~/pythons новое приглашение bash примет физический путь:

 /media/sf_Google_Drive/Home/Programs/Pythons$ # Not an awesome prompt 

Q: Да, он открыт для правильного каталога … но есть ли способ получить tmux для запуска bash с логическим путем вместо полномасштабного физического пути?

В качестве альтернативы, возможно, есть что-то, что я могу добавить в .bashrc чтобы это произошло?

Редактировать:

Чтобы проверить, не вызвали ли какие-либо настройки конфигурации эту проблему, я попытался прокомментировать все строки в ~/.tmux.conf за исключением

 bind c new-window -c "#{pane_current_path}" 

но я все еще получаю полный физический путь. Я также попытался echo текущий (логический) путь из верхней части моего файла ~/.bashrc . К сожалению, это отразится на уродливом физическом пути родительского окна, которое, очевидно, стало физическим и логическим путем нового окна. Поэтому tmux 2.0 должен передавать его в новый экземпляр bash через значение "#{pane_current_path}"

Более того, я только что нашел эту недавно открытую проблему с tmux: pane_current_path не согласен с PWD # 33 панели, что указывает на то, что это происходит из tmux-кода.

Вопрос: Может быть, мой вопрос должен быть, есть ли обходной путь?

One Solution collect form web for “Как я могу заставить tmux tell bash отобразить * логическую * версию текущего каталога в недавно открытых окнах?”

Следующие работали для меня.

Для ~/.bashrc добавьте строку:

 PS1='$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD)\u@\H:\w$ ' 

И до ~/.tmux.conf добавьте строки:

 bind-key c run-shell 'tmux neww "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"' bind-key % run-shell 'tmux splitw -h "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"' bind-key '"' run-shell 'tmux splitw -v "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"' 

Перезапустить tmux.

источники

См. Раздел «Как открыть новое окно в том же каталоге, что и текущее окно?» по адресу http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/FAQ .

Обратите внимание, что символы в конце строки .bashrc должны были быть изменены с оригинала по ссылке выше на '\u@\H:\w$ ' , чтобы правильно отобразить полное приглашение bash. См. http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/bash-prompt-escape-sequences.html для получения дополнительной информации.

  • Приобретение видеороликов YouTube в сеансах bash, в режиме ASCII
  • поддержка tmux, TERM и 256 цветов
  • Прикрепите tmux к pty после reptyr?
  • Почему tmux испортит мой логин Ubuntu, хотя он работает нормально после входа в систему для новых окон?
  • Как я могу отказаться от оболочки после выхода из команды, которую я начал с помощью сценария tmux?
  • Как вы скрываете панель?
  • Как использовать vim-slime из одного сеанса tmux?
  • Окно Vim в Tmux
  • Tmux не использует мой .tmux.conf
  • отключить имя хоста в выводах «list windows» tmux
  • Автоматически находить позицию, начиная с последней команды, запущенной в tmux
  • Linux и Unix - лучшая ОС в мире.