Можно просто
tmux attach -c directory -t session 2> /dev/null &
присоединение будет завершено немедленно, так как разветвленное фоновое задание не является терминалом. Но ему удастся изменить рабочий каталог сеанса tmux.
Редактировать:Я исправил -s
с помощью -t
, но этот трюк больше не работает в tmux 3.1b.
Весь смысл mktemp
заключается в том, чтобы, цитируя его руководство, «безопасно создать временный файл или каталог». По сути, в скрипте вы можете написать
file="$(mktemp)"
или
dir="$(mktemp -d)"
и используйте любой из них по своему усмотрению, зная, что временный файл и каталог доступны только пользователю, выполнившему команду (, и root, конечно, в большинстве настроек ), и что они не t символическая ссылка на что-то другое и т. д. (Есть еще несколько предостережений; в частности, вам нужно проверить статус выхода, а родительский каталог должен быть безопасным для использования. Подробности см. в документации .)
mktemp -u
не дает этих гарантий, поскольку отделяет построение имени файла от его использования; в скрипте вам нужно запустить(не делайте этого)
dir="$(mktemp -u)"
mkdir "$dir"
chmod 700 "$dir"
Между mktemp
и mkdir
другой процесс может создать каталог,с разным правом собственности; или, в случае файла, другой процесс может создать файл или создать на его месте символическую ссылку...