Запуск чего-либо из .zshenv
- определенно неправильный подход. Этот файл выполняется каждым экземпляром zsh
, даже при запуске скрипта. Используйте .zshrc
для вещей, которые должны быть выполнены в интерактивных оболочках, и .profile
(или .zprofile
, если вы установили zsh в качестве оболочки входа в систему) для вещей, которые следует делать при входе в систему.
Если вы хотите использовать tmux в каждом терминале, запустите tmux непосредственно под терминалом, например, gnome-terminal -e tmux
(измените ваш графический интерфейс для передачи этих аргументов). Вы можете передавать аргументы даже с -e
(хотя будьте осторожны с цитированием), например, gnome-termminal -e 'tmux -s ~/.alternate.tmux.conf'
.
Если вы также хотите запустить tmux при входе через ssh, вам придется запустить его из своего ~/.profile
. Делайте это только в том случае, если родительским процессом оболочки входа является sshd
:
parent_process_name=$(ps -o comm= -p $PPID`)
case ${parent_process_name##*/} in
sshd) type tmux >/dev/null 2>/dev/null && exec tmux;;
esac
Другой подход к запуску tmux через ssh - получить имя сеанса из среды. Таким образом, вы можете присоединиться к существующему сеансу. Самый простой способ - написать небольшой скрипт на стороне сервера, например ~/bin/tmux-login-session
:
#!/bin/sh
if tmux has-session -t "$1"; then
exec tmux attach-session -t "$1"
else
. ~/.profile
exec tmux new-session -s "$1"
fi
Затем используйте команду ssh, как показано ниже:
ssh -t hostname.example.com bin/tmux-login-session SESSION_NAME