Comment faire pour démarrer tmux avec plusieurs fenêtres dans différents répertoires?

Je veux utiliser un script pour ouvrir une session tmux avec 6 fenêtres, chacune dans un répertoire différent. J'ai commencé avec un script que j'ai trouvé et j'ai essayé cette première:

tmux new-session -s xyz   -n etc -d 'cd /etc'
tmux new-window  -t xyz:1 -n var    'cd /var/log'

Mais j'ai vite découvert que cela ne fonctionne pas comme prévu, la fenêtre sera fermée après la commande shell se termine.

Donc mon idée suivante a été de commencer un nouveau shell comme ceci:

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

Cela fonctionne presque. Mais si je commence à plus de 4 windows, j'ai souvent voir la suite de bash erreurs dans l'un de la windows après le démarrage:

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

Je n'ai aucune idée de pourquoi cela arrive, mais je pense toujours que je ne fais pas ce droit. Est-il un meilleur moyen de mettre en place une session tmux sur plusieurs répertoires?

  • Il est probable qu'une partie non cotées variable .bashrc ou similaire qui est la production des espaces variables. Si vous avez un code comme if [[ -f ${file} ]] ; ... et file="nom de fichier w espaces", cela permettra de sauter les choses (de la même pour toutes les variables, et pas seulement de fichier vars). set -vx est votre ami. Bonne chance.
  • Merci, vous semblez être de droite. Une ligne offensive dans mon .bashrc semble être [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)". Si j'en commentaire, l'erreur disappars. Même si je ne comprends toujours pas ce que le problème est vraiment: Cela n'arrive que dans 1 cas sur 6 windows. Et pas même chaque fois que je créer la session tmux.
  • hm... c'est pas le genre de l'espace que j'étais en train de penser, qui n'est pas la valeur d'une variable, mais une substitution de commande c'est à dire $(SHELL....) et les espaces sont OK. Alors... souvent un guillemet manquant (simple ou double) au-dessus de la ligne qui apparaît comme une erreur de causer des problèmes de ce genre. Si vous vous souciez de votre post .bashrc pour coller bin et d'éditer votre message avec un lien à elle, nous pouvons probablement résoudre ce problème. Bonne chance.
  • Eh bien, c'est la valeur par défaut .bashrc de Ubuntu Oneiric, voir ici. Donc rien de spécial.