Voglio usare uno script per aprire una sessione tmux con 6 finestre, ognuna in una directory diversa. Ho iniziato con a script I found e provato questa prima:Come avviare tmux con diverse finestre in diverse directory?
tmux new-session -s xyz -n etc -d 'cd /etc'
tmux new-window -t xyz:1 -n var 'cd /var/log'
Ma presto scoperto che questo non funziona come mi aspettavo - la finestra sarà chiusa dopo il completamento del comando di shell.
Quindi la mia prossima idea era quella di avviare una nuova shell in questo modo:
tmux new-session -s xyz -n etc -d 'cd /etc; bash -i'
tmux new-window -t xyz:1 -n var 'cd /var/log; bash -i'
tmux new-window -t xyz:2 -n var2 'cd /var/log; bash -i'
tmux new-window -t xyz:3 -n var3 'cd /var/log; bash -i'
tmux new-window -t xyz:4 -n var4 'cd /var/log; bash -i'
tmux new-window -t xyz:5 -n var5 'cd /var/log; bash -i'
tmux new-window -t xyz:6 -n var6 'cd /var/log; bash -i'
tmux select-window -t xyz:1
tmux -2 attach-session -t xyz
Questo quasi funziona. Ma se mi metto più di circa 4 finestre, ho spesso vedere i seguenti errori bash in una delle finestre dopo l'avvio:
bash: [: =: unary operator expected
bash: [: too many arguments
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: too many arguments
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
Non ho idea del perché questo accade, ma io continuo a pensare che non sto facendo questo giusto C'è un modo migliore per impostare una sessione tmux su più directory?
È probabile che alcune variabili non quotate in .bashrc o simili producano spazi in variabili.Se hai un codice come 'if [[-f $ {file}]]; ... 'e file =" nome file w spazi ", questo farà esplodere le cose (simile a qualsiasi variabile, non solo ai file vars). 'set -vx' è tuo amico. In bocca al lupo. – shellter
Grazie, sembra che tu abbia ragione. Una riga offensiva nel mio '.bashrc' sembra essere' [-x/usr/bin/lesspipe] && eval "$ (SHELL =/bin/sh lesspipe)" '. Se commento, l'errore scompare. Anche se non riesco ancora a capire qual è il problema: succede solo in 1 delle 6 finestre. E nemmeno ogni volta che creo la sessione tmux. –
hm ... non è il tipo di spazio a cui stavo pensando, che non è un valore di variabile, ma una sostituzione di comando, ad esempio '$ (SHELL ....)' e gli spazi sono OK lì. Quindi ... spesso una citazione mancante (singola o dbl) sopra la linea che viene visualizzata come un errore causerà problemi come questo. Se ti interessa pubblicare il tuo .bashrc per incollare il cestino e modificare il tuo messaggio con un link, probabilmente possiamo risolvere questo problema. In bocca al lupo. – shellter