Доброго времени суток. Хочу написать скрипт в котором создаётся окружение. У менять есть цикл в котом сначала создаются сессии, а потом хочу в разных сессия создать окна с панелями, то такая связка не работает:
local sessions="main virt dev adm"
for name in $sessions; do
tmux has-session -t $name 2>/dev/null || tmux new-session -d -s $name
done
local path="${HOME}/dev"
local windows="one two three four"
tmux attach-session -d -t dev
for i in $windows; do
tmux new-window -n $i -c $path/$i 'ranger'\; split-window -h -c $path/$i \; split-window -v -l 15% -c $path/$i \; select-pane -t 0
done
у меня скрипт не переключается на сессию dev, в первом цикле он остаётся на последней сессии и создаёт там окна с панелями. Я читаю ман но не могу понять, как в скрипте зацепится за другую сессию. tmux также сортирует сессии по алфавиту, а как сделать чтобы он сортировал в порядке создания?
upd:
Решается разными способами в зависимости от того где и что да и зачем это нужно.
- Как я понял из экспериментов tmux всегда помнит какая созданная сессия была последней и остальные команды на создания окон или чего либо ещё будет применятся к этой сессии, если команды вводятся без tmux. У меня была проблема в том что не до конца понимал почему скрипт отрабатывает по разному, внутри tmux и без него.
- Если скрипт запускается не из tmux можно использовать:
tmux attach-session -d -t $name\; do_something\; detach
будет отрабатывать как нужно - Если скрипт запускать из tmux то перед запуском команды нужно нужно очистить переменную окружения
TMUX
, чтобы не выдавало ошибки:sessions should be nested with care, unset $TMUX to force
Переписал с учётом своих пожеланий =)
local sessions="main virt dev adm"
for name in $sessions; do
tmux has-session -t $name 2>/dev/null || tmux new-session -d -s $name
done
local path="${HOME}/dev"
local windows="one two three four"
for i in $windows; do
TMUX= tmux attach -d -t dev\; neww -n $i -c $path/$i 'ranger'\; splitw -h -c $path/$i \; splitw -v -l 15% -c $path/$i \; selectp -t 0\; detach
done
Думаю уже писали про это, но чукча не читатель, но писатель =)