Quiero usar un script para abrir una sesión de tmux con 6 ventanas, cada una en un directorio diferente. Empecé con a script I found y trató primero esto,¿Cómo iniciar tmux con varias ventanas en diferentes directorios?
tmux new-session -s xyz -n etc -d 'cd /etc'
tmux new-window -t xyz:1 -n var 'cd /var/log'
Pero pronto me di cuenta de que esto no va a funcionar como esperaba - la ventana se cerrará después de finalizar el comando shell.
Así que mi siguiente idea era comenzar una nueva shell como esto:
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
Esto casi funciona. Pero si comienzo a más de unos 4 ventanas, veo con frecuencia los siguientes errores de bash en una de las ventanas después del arranque:
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
no tengo ni idea de por qué sucede esto, pero sigo pensando que no estoy haciendo este derecho. ¿Hay una mejor manera de configurar una sesión de tmux en varios directorios?
Es probable que alguna variable sin comillas en .bashrc o similar esté produciendo espacios en las variables.Si tiene código como 'if [[-f $ {file}]]; ... 'y file =" filename w spaces ", esto explotará las cosas (similar para cualquier variable, no solo para archivos vars). 'set -vx' es tu amigo. Buena suerte. – shellter
Gracias, parece que tienes razón. Una línea ofensiva en mi '.bashrc' parece ser' [-x/usr/bin/lesspipe] && eval "$ (SHELL =/bin/sh lesspipe)" '. Si lo comento, el error desaparece. Aunque todavía no entiendo cuál es realmente el problema: solo ocurre en 1 de las 6 ventanas. Y ni siquiera cada vez que creo la sesión de tmux. –
hm ... ese no es el tipo de espacio en el que estaba pensando, que no es un valor variable, sino una sustitución de comando, es decir '$ (SHELL ....)' y los espacios están bien allí. Entonces ... a menudo una comilla faltante (simple o doble) sobre la línea que se muestra como un error causará problemas como este. Si le interesa publicar su .bashrc para pegar el contenedor y editar su mensaje con un enlace al mismo, probablemente podamos resolverlo. Buena suerte. – shellter