Чому "tmux" створює нові вікна як оболонки для входу за замовчуванням?


26

Коли ви починаєте новий сеанс у tmuxабо створюєте нове вікно всередині запущеного сеансу, його типовою поведінкою є запуск оболонки (напр .:) bashяк оболонки для входу.

Я розумію, що оболонка входу призначена для виконання процедур конфігурацій та процедур, які представляють інтерес саме під час реєстрації в системі . Але в більшості випадків (за винятком випадків, коли ви можете використовувати tmux в якості оболонки для входу), це не справжній намір користувача робити це, коли він просто хоче відкрити нове вікно.

Отже, що обґрунтовує, щоб зробити це поведінкою за замовчуванням tmux?


Єдине, що документація говорить про це:

default-command  shell-command
        Set the command used for new windows (if not specified when the
        window is created) to shell-command, which may be any sh(1)
        command.  The default is an empty string, which instructs tmux
        to create a login shell using the value of the default-shell
        option.

Відповіді:


24

Інтерактивна оболонка без входу зазвичай ніколи не переживає вашу оболонку входу на верхньому рівні, тому вони можуть сподіватися, що будь-які закладені нею ресурси будуть доступні в будь-який час, але це не так з tmux:

  • ви увійдете в свою оболонку -> запускаються ваші сценарії входу
  • ти запускаєш tmux, щось робиш, відриваєшся
  • вийдіть з оболонки верхнього рівня -> запускаються сценарії виходу
  • tmux сесія все ще працює, але будь-які засоби, запущені вашою вхідною оболонкою, наразі недоступні
  • ви знову ввійдете в систему і повторно вкладете іншу оболонку входу
  • будь-які засоби, запущені новою оболонкою входу, можуть не бути видно tmux, оскільки вона все ще працює зі старим середовищем (навіть якщо є команди для оновлення середовища)

Деякі можуть подумати, що оболонки для входу в tmux start в будь-якому разі непотрібні, оскільки в більшості налаштувань відсутні сценарії виходу, а сценарії входу просто встановлюють деякі змінні середовища.

Крім того, якщо ви додаєте рядки до змінних оточуючих середовищ у своїх скриптах для входу (наприклад: PATH = $ PATH: / some / other / path), і вони запускаються не один раз в тій же ієрархії процесів, ви отримуєте дублікати, і це найбільше дратує

Але все ж я схильний вважати, що дефолт має сенс.

Дивіться також це: http://openbsd-archive.7691.n7.nabble.com/tmux-and-login-shells-td170948.html


2
Дякую за відповідь та за посилання! Я думаю, що я можу жити exec shзрештою ... (я не думав про це.)
leogama

3
Чи є у вас конкретні приклади того, що може зламатися, якщо tmux не породив оболонку входу? Я думаю зробити це за замовчуванням, але я не хочу стикатися з важко діагностуваними проблемами.
Карл Патенауд Пулін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.