Das Starten von etwas .zshenv
ist definitiv der falsche Ansatz. Diese Datei wird von jeder Instanz ausgeführt zsh
, auch wenn ein Skript ausgeführt wird. Verwenden Sie diese Option .zshrc
für Dinge, die in interaktiven Shells ausgeführt werden sollten, und .profile
(oder .zprofile
, wenn Sie zsh als Login-Shell festgelegt haben) für Dinge, die beim Anmelden ausgeführt werden sollten.
Wenn Sie tmux in jedem Terminal wünschen, starten Sie tmux direkt unter dem Terminal, zB gnome-terminal -e tmux
(ändern Sie Ihren GUI-Launcher, um diese Argumente zu übergeben). Sie können Argumente auch mit übergeben -e
(seien Sie jedoch vorsichtig beim Zitieren), 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
. Führen Sie dies nur aus, wenn der übergeordnete Prozess der Login-Shell wie folgt lautet sshd
:
parent_process_name=$(ps -o comm= -p $PPID`) case $ in sshd) type tmux >/dev/null 2>/dev/null && exec tmux;; esac
Ein anderer Ansatz, um tmux über ssh zu starten, besteht darin, einen Sitzungsnamen aus der Umgebung zu erhalten. Auf diese Weise können Sie eine Verbindung zu einer vorhandenen Sitzung herstellen. Am einfachsten ist es, ein kleines Skript auf dem Server zu schreiben, zB ~/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 folgt:
ssh -t hostname.example.com bin/tmux-login-session SESSION_NAME