Запуск чего-либо с .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 $ 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