Как я могу установить оболочку по умолчанию для запуска tmux
Я бы хотел, чтобы моя bash-оболочка по умолчанию попала прямо в tmux, вместо того, чтобы мне всегда приходилось вводить tmux каждый раз.
- tmux не проходит корректно последовательности ctrl-shift-arrow
- как конвертировать с startupScript из tmux в gnu-screen?
- Выполнить cd в двух окнах с помощью одной команды
- Как показать простой режим работы в строке состояния tmux?
- tmux: внутреннее окно уведомляет внешнюю сессию
- Как я могу получить меню сеанса tmux за пределами сеанса tmux?
- tmux сеанс, потерянный в неизвестных очках, причина и возможное решение?
- Создание запущенных конфигураций tmux?
- Быстрый переход к сеансу tmux
- Unbind cn и cp из tmux
- Когда вы вводите термин поиска в режиме копирования, есть ли способ стереть поисковый запрос с чем-то вроде CTRL-U?
- Tmux не может найти окно
- Пересылка Cc на удаленную сессию 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 не очень точна о том, какой файл читается и выполняется когда.