Как я могу установить оболочку по умолчанию для запуска tmux

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

12 Solutions collect form web for “Как я могу установить оболочку по умолчанию для запуска tmux”

Кажется, это работает …

https://wiki.archlinux.org/index.php/Tmux#Start_tmux_on_every_shell_login

Просто добавьте следующую строку кода bash в ваш .bashrc перед вашими псевдонимами; код для других оболочек очень похож:

[[ $TERM != "screen" ]] && exec tmux 

@ Ответ StarNamer, как правило, является точным, хотя я обычно включаю следующие тесты, чтобы убедиться, что tmux (1) существует в системе и (2) не пытается запускаться внутри себя:

 if command -v tmux>/dev/null; then [[ ! $TERM =~ screen ]] && [ -z $TMUX ] && exec tmux fi 

Существует команда chsh которая изменяет оболочку входа. Проконсультируйтесь с man chsh .

Добавление строки типа

 [ -z "$TMUX" ] && { tmux attach || exec tmux new-session && exit;} 

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

 [ -z "$TMUX" ] && { tmux attach || tmux new-session;} 

Также обратите внимание, что «exec» не следует ставить перед «tmux attach», поскольку это приведет к закрытию соединения, даже если для подключения нет сеансов tmux.

Я успешно использую

 case $- in *i*) [ -z "$TMUX" ] && exec tmux esac 

в моем .zshrc . Если вы используете bash, поместите его в свой .bashrc .


Я также попробовал установить tmux качестве моей оболочки по умолчанию ( chsh -s $(which tmux) ), и, похоже, он ssh $some_server echo foo прямое выполнение команды через SSH, например ssh $some_server echo foo не будет выводить какой-либо вывод.

Добавьте это в свой файл ~/.tmux.conf

 set -g default-command /usr/local/bin/fish 

Вы могли (и на данный момент, вероятно, должны) использовать команду chsh для установки tmux в качестве оболочки по умолчанию, а затем добавить следующее в .tmux.conf :

 set-option -g default-shell /path/to/your/favourite/shell 

Не забудьте изменить путь в конце строки.

Ни один из вышеперечисленных ответов не работал для меня – exec tmux запрещает мне закрывать tmux, не покидая оболочку (открыта ли она с помощью Ctrl + T или из меню приложения).

Я использую Linux Mint, который позволяет сопоставлять некоторые горячие клавиши с командами и (не-кошерно, как это может быть для некоторых ..) У меня есть оболочки bash с командами, запущенными там, например Win + Alt + B делает что-то вроде свернутый оператор bash -exec(vim) для редактирования моего .bashrc, поэтому он действует как обычная оболочка.

tmux загружен, а не vim в этой ситуации после размещения выше в верхней части моего .bashrc . Я завернул строку выполнения tmux в другой оператор if, проверяя, что он работает в интерактивном режиме.

 if command -v tmux>/dev/null; then if [ ! -z "$PS1" ]; then # unless shell not loaded interactively, run tmux [[ ! $TERM =~ screen ]] && [ -z $TMUX ] && tmux fi fi 

Вы можете обернуть все это на одну строку, но для удобства чтения я думаю, что все в порядке.

Добавив к ответу @Louis Maddox, я выполнил бы часть tmux;

 (exec tmux attach || exec tmux new-session) 

Перейдите к настройкам терминала. введите описание изображения здесь

Затем нажмите кнопку «команда». введите описание изображения здесь

Проверьте «Запуск пользовательской команды вместо моей продажи» и напишите любую команду, которую вы хотите выполнить при запуске вашего терминала.

Это в моем ~/.profile (я использую ksh93 ):

 if [[ -z "$TMUX" ]]; then if tmux has-session 2>/dev/null; then exec tmux attach else exec tmux fi fi 

Если TMUX среды TMUX не установлена ​​/ пуста, то мы еще не находимся в сеансе tmux, поэтому …

Если tmux has-session возвращается с нулевым статусом выхода (true), для доступа к нему есть доступный сеанс. Прикрепите к нему.

Если нет, создайте новый сеанс.

Также можно использовать tmux качестве вашей оболочки входа. Однако, если вы это сделаете, обязательно установите default-shell по default-shell в действительную оболочку в файле ~/.tmux.conf (более подробную информацию см. В руководстве tmux).

Поскольку Микель уже заявил в своем комментарии, чтобы иметь tmux, так как ваша оболочка входа может иметь побочные эффекты. Но вы можете сделать tmux свою оболочку по умолчанию, буквально. Оболочка по умолчанию пользователя определена в / etc / passwd. Таким образом, вы можете стать root и редактировать / etc / passwd, например, sudo vi /etc/passwd искать строку, начинающуюся с вашего имени пользователя. Вероятно, это заканчивается :/bin/bash . Измените / bin / bash на / usr / bin / tmux, и теперь tmux является вашей учетной записью по умолчанию.

Однако никаких гарантий, что это не вызовет проблем!

То, что может работать лучше, – НЕ делать ничего, что требует привилегий root. Я бы попытался создать файл в моей домашней директиве с именем .bash_login и запустить tmux из этого файла: `echo" tmux "> ~ / .bash_login.

Это должно сработать, но вы должны попытаться найти нас самих, b / c документация bash не очень точна о том, какой файл читается и выполняется когда.

  • Почему лидер Tmux Space также делает 2 лидером?
  • Цветовая схема VIM с соляризацией выглядит неправильно при использовании tmux
  • Установите переменную окружения для всех оболочек tmux при перезапуске gnome-сессий
  • Отключить инверсию цвета для отмеченной панели в tmux
  • Получение tmux для копирования буфера в буфер обмена
  • Различные цвета и стили vim в Tmux и Gnome
  • Терминальные цвета для Vim Airline и Tmux Tmuxline
  • Выход Tmux медленнее, когда существуют вертикальные расщепления: почему?
  • Буфер именования экспортируется динамически в tmux
  • ssh-agent для вложенной сессии tmux
  • tmux: общий сеанс, один пользователь в панели, другой в другой панели, два разных курсора
  • Linux и Unix - лучшая ОС в мире.