Es gibt einen display-message
Befehl in der tmux
Manpage:
Display-Nachricht [-p] [-c Ziel-Client] [-t Zielbereich] [Nachricht]
(Alias: Anzeige)
Eine Nachricht anzeigen. Wenn -p angegeben wird, wird die Ausgabe auf stdout gedruckt, andernfalls wird sie in der Statuszeile des Zielclients angezeigt. Das Format der Nachricht wird im Abschnitt FORMATE beschrieben. Informationen werden aus dem Zielbereich übernommen, wenn -t angegeben wird, andernfalls der aktive Bereich für die Sitzung, die an den Zielclient angehängt ist.
Und im Abschnitt FORMATE gibt es eine Variable mit dem Namen session_name
, die durch den Namen der Sitzung ersetzt wird, wenn Sie sie im Format verwenden #{session_name}
.
Versuchen Sie auszuführen, tmux display-message -p '#{session_name}'
wenn Sie sich in einer tmux-Sitzung befinden. Vielleicht sehen Sie eine Nummer, es ist die ID der Sitzung, die Sie angehängt haben. Ausführen tmux ls
, um die Sitzungsliste zu überprüfen.
Wenn Sie jedoch einen tmux mit starten tmux new -s myproject
, sehen Sie myproject
als Ausgabe, aber keine Zahl. Weil Sie den Namen der Sitzung angegeben haben, als Sie tmux gestartet haben.
Meine Lösung besteht also darin, einen Code in die ~/.bashrc
Datei zu legen :
# [tmux] load scripts in ~/.tmux on creating a new pane
# load order: __before__.sh, ${session_name}.sh, __after__.sh
function tmux_load_startup_scripts_by_session_name() {
if [[ -n ${TMUX} ]]; then
local env_before_script="${HOME}/.tmux/__before__.sh"
[[ -f "${env_before_script}" ]] && { . "${env_before_script}"; }
local env_main_script="${HOME}/.tmux/$(tmux display-message -p '#{session_name}').sh"
[[ -f "${env_main_script}" ]] && { . "${env_main_script}"; }
local env_after_script="${HOME}/.tmux/__after__.sh"
[[ -f "${env_after_script}" ]] && { . "${env_after_script}"; }
fi
}
tmux_load_startup_scripts_by_session_name
Verwendungszweck
mkdir ~/.tmux
cat "__before__.sh" > ~/.tmux/__before__.sh
cat "__after__.sh" > ~/.tmux/__after__.sh
cat "sample.sh" > ~/.tmux/sample.sh
tmux new -s sample
Sie sehen die Ausgabe in jedem Panel, das Sie erstellen:
__before__.sh
sample.sh
__after__.sh
Der Vorteil dieser Lösung besteht darin, dass Sie verschiedene Skripte für verschiedene Projekte oder Umgebungen angeben können.