Переменные среды Tmux наследуются от другого сеанса, а не от текущей оболочки

Похоже на обновление прошивки мегарейда (А ТАКЖЕ проблема с диммированием оперативной памяти! )исправлен сбой во время DSA.

0
05.02.2020, 10:32
1 ответ

Как вы создаете новый сеанс tmux? Если вы создаете его из привязки клавиш или из командной строки tmux C-b :, то tmux не может автоматически узнать, какие переменные среды находятся внутри вашей работающей оболочки.

Вы можете сказать tmux, что это такое, выполнив что-то подобное на PS1:

[ -n "$TMUX" -a -n "$CONDA_DEFAULT_ENV" ] && tmux setenv -g CONDA_DEFAULT_ENV "$CONDA_DEFAULT_ENV"

Это обновит CONDA_DEFAULT_ENVв глобальной среде tmux до значения из панели, где вы последний раз использовали оболочку. Но проблема в том, что это будет применяться ко всем новым панелям в любом сеансе.

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

new-windowимеет -eдля установки переменной среды при создании окна, но, к сожалению, это не было добавлено в new-session, поэтому лучше всего использовать скрипт-оболочку.

Итак, если у вас есть что-то подобное в PS1, поместите CONDA _DEFAULT _ENV в пользовательскую переменную среды в глобальной среде tmux:

[ -n "$TMUX" -a -n "$CONDA_DEFAULT_ENV" ] && tmux setenv -g MY_CONDA_DEFAULT_ENV "$CONDA_DEFAULT_ENV"

Вы можете написать что-то вроде этого скрипта, чтобы создать новый сеанс и скопировать сохраненную переменную в среду сеанса:

S=$(tmux new -dP)

eval `tmux showenv -gs MY_CONDA_DEFAULT_ENV 2>/dev/null`
if [ -n "$MY_CONDA_DEFAULT_ENV" ]; then
    tmux setenv -t$S CONDA_DEFAULT_ENV "$MY_CONDA_DEFAULT_ENV"
fi

if [ -n "$TMUX" ]; then
    tmux switch -t$S
else
    tmux attach -t$S
fi

Затем используйте этот сценарий вместо запуска new-sessionдля создания нового сеанса.

0
28.04.2021, 23:24

Теги

Похожие вопросы