Как запустить tmux с несколькими окнами в разных каталогах?

Я хочу использовать сценарий для открытия сеанса tmux с 6 окнами, каждое в разных каталогах. Я начал с скрипта, который нашел и попробовал сначала:

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

Но вскоре я обнаружил, что это не сработает так, как я ожидал - окно закроется после завершения команды оболочки.

Итак, моей следующей идеей было запустить новую оболочку вот так:

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

Это почти работает. Но если я запускаю более четырех окон, я часто вижу следующие ошибки bash в одном из окон после запуска:

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

Я понятия не имею, почему это происходит, но все же думаю, что делаю это неправильно. Есть ли лучший способ настроить сеанс tmux в нескольких каталогах?

33
задан Ben Klein 2 January 2013 в 15:20
поделиться