4

Я использую старую версию tmux (v1.5). Как я могу настроить tmux для установки каталога по умолчанию на каталог, где был запущен сеанс?

Это не проблема с более новыми версиями tmux (1.7 и выше). Я могу просто добавить следующее в ~/.tmux.conf чтобы получить то, что я хочу:

set-option -g default-path "-"

К сожалению, эта опция недоступна в используемой версии tmux.

1 ответ1

6

Это немного запутанно, но это работает:

  • Добавьте это определение функции в ваш ~/.profile:

    tmux() ( ORIG_PWD_FOR_TMUX="${PWD}" command tmux "$@"; )
    

    Эта функция запускает tmux с переменной окружения ORIG_PWD_FOR_TMUX установленной в текущий каталог ( ${PWD} ). На эту переменную будет ссылаться всякий раз, когда создается новое окно.

  • Добавьте следующее в файл ~/.tmux.conf:

    set-option -g default-command "[ -z \"\${ORIG_PWD_FOR_TMUX+set}\" ] || { cd \"\${ORIG_PWD_FOR_TMUX}\"; unset ORIG_PWD_FOR_TMUX; }; exec ${SHELL}"
    set-option -g -a update-environment " ORIG_PWD_FOR_TMUX"
    

    Приведенное выше default-command проверяет, установлена ли переменная среды ORIG_PWD_FOR_TMUX . Если это так, он изменяется на этот каталог и сбрасывает переменную (для поддержания чистоты среды). Затем он вызывает оболочку, которая будет работать в исходном каталоге.

    Параметр update-environment указывает tmux скопировать значение ORIG_PWD_FOR_TMUX в среду сеанса, чтобы в будущих командах new-window было доступно значение переменной.

Теперь вы можете просто запустить tmux как обычно, за исключением того, что новые окна будут запускаться в том же каталоге, что и сеанс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .