Etwas von zu starten .zshenv
ist definitiv der falsche Ansatz. Diese Datei wird von jeder Instanz von ausgeführt zsh
, auch wenn ein Skript ausgeführt wird. Verwenden Sie diese Option für Aufgaben .zshrc
, die in interaktiven Shells ausgeführt werden sollen, und .profile
(oder .zprofile
, wenn Sie zsh als Anmeldeshell festgelegt haben) für Aufgaben, die beim Anmelden ausgeführt werden sollen.
Wenn Sie tmux in jedem Terminal möchten, starten Sie tmux direkt unter dem Terminal, z. B. gnome-terminal -e tmux
(ändern Sie Ihren GUI-Launcher, um diese Argumente zu übergeben). Sie können Argumente auch mit übergeben -e
(obwohl Sie beim Zitieren vorsichtig sein müssen), z gnome-termminal -e 'tmux -s ~/.alternate.tmux.conf'
.
Wenn Sie tmux auch starten möchten, wenn Sie sich über ssh anmelden, müssen Sie es von Ihrem Computer aus starten ~/.profile
. Tun Sie dies nur, wenn der übergeordnete Prozess der Anmeldeshell 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
Ein anderer Ansatz zum Starten von tmux über ssh wäre das Abrufen eines Sitzungsnamens aus der Umgebung. Auf diese Weise können Sie eine Verbindung zu einer vorhandenen Sitzung herstellen. Am einfachsten ist es, ein kleines Skript auf der Serverseite zu schreiben, z ~/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
Verwenden Sie dann einen ssh-Befehl wie den folgenden:
ssh -t hostname.example.com bin/tmux-login-session SESSION_NAME