configurazione tmux condizionata al sistema operativo


Risposte:


51

Usa il if-shellcomando:

if-shell "uname | grep -q Darwin" "tmux-cmd1; tmux-cmd2;" "tmux-cmd3; tmux-cmd4"

È possibile che si desideri inserire comandi specifici del sistema operativo in file separati ed eseguirli tramite il comando "file di origine".

if-shell "uname | grep -q Darwin" "source-file .tmux-macosx" "source-file .tmux-linux"

8
I comandi if-shelle run-shell tmux sono attualmente asincroni (a partire da tmux 1.7); eseguono effettivamente il comando shell in background e tutti i comandi tmux che eseguono verranno eseguiti solo dopo i comandi che seguono il comando if-shello run-shellstesso ( tmux è a thread singolo). In effetti, se si utilizza if-shello run-shelldentro ~/.tmux.conf, la sessione iniziale (e tutte le sessioni, finestre o riquadri creati esplicitamente creati attraverso ~/tmux.conf) mancherà di alcuna configurazione di tmux organizzata tramite if-shello run-shellcomandi.
Chris Johnsen,

1
@ChrisJohnsen if-shellfunziona come previsto per me con tmux 1.8. Lo sto usando per impostare set-title-string solo per SSH: github.com/blueyed/dotfiles/commit/…
blueyed

2
Questo dovrebbe essere accettato; è il modo corretto di farlo.
Chev,

11

Jimeh https://github.com/jimeh/dotfiles/commit/3838db8 ha la risposta. Anche Chris Johnsen merita molto credito per aiutare le persone sulla questione GitHub qui: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987

Fondamentalmente, si imposta uno script shell chiamato safe-reattach-to-user-namespaceche verifica l'esistenza del comando reale riattaccare ...

#! /usr/bin/env bash

# If reattach-to-user-namespace is not available, just run the command.
if [ -n "$(command -v reattach-to-user-namespace)" ]; then
  reattach-to-user-namespace $@
else
  exec "$@"
fi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.