21

Когда вы запускаете новый сеанс в 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.

1 ответ1

19

Интерактивная оболочка без регистрации обычно никогда не переживает вашу оболочку верхнего уровня, поэтому они могут ожидать, что любые запущенные ею средства будут доступны в любое время, но это не относится к tmux:

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

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

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

Но все же я склонен думать, что дефолт имеет смысл.

Смотрите также это:http://openbsd-archive.7691.n7.nabble.com/tmux-and-login-shells-td170948.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .