tmux
毎回入力する代わりに、新しいセッションウィンドウに常に使用できるようにするにはどうすればtmux
よいでしょうか。
では、ターミナルウィンドウを開いていない状態で開いた場合、最初のセッションをどのように行うことができtmux
ますか?
.bashrc
ある種のことのように思えますか?
警告 これは、Ubuntuログインを「破損」させる可能性があります(ターミナルウィンドウを開くことができなくなります-これは良くありません!)。細心の注意を払って使用し、私が行ったのと同じ問題が発生した場合に備えて、ログインできる2番目の管理者アカウントをコンピューターに持っていることを確認してください。詳細と別のアプローチについては、他の回答を参照してください。
その警告を考えると、最も簡単な解決策は、tmux
呼び出しをあなたの最後に.bashrc
追加することです。
alias g="grep"
alias ls="ls --color=auto"
# ...other stuff...
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi
exec
ターミナルを開いたときに開始するbashプロセスがに置き換えられることtmux
を意味することに注意してくださいCtrl-B D
(つまり、tmuxから切断する)と、元のbashプロセスに戻るのではなく、実際にウィンドウが閉じます。これはおそらくあなたが望む動作ですか?
また、if
ステートメントが必要です(現在のbashウィンドウがすでにtmuxプロセスにあるかどうかを検出します)。そうでない場合、tmuxを開始するたびに、含まれているbashプロセスが独自のtmuxセッションを開始しようとし、ネストされたtmuxenの数が無限になります。えーと、かなり迷惑になる可能性があります(とはいえ、見た目はかっこいいです)。
bash
ただし、 bashを実行するとtmuxプロセスに変わる可能性があるため、他のプログラムが予期しない方法で動作する可能性があるリスクは非常に小さいため、ターミナルエミュレータの起動方法を変更することをお勧めします。 。
次のような小さな実行可能シェルスクリプトを使用します~/bin/terminal
(で~/bin
、$PATH
であるため、自動的に検出されます)。
#!/bin/sh
exec gnome-terminal -e tmux
(私はgnome-terminalを使用しないので、削除する必要があるかもしれexec
ません。よくわかりません。)
これで、sciptを実行するたびにterminal
、tmuxを備えたターミナルができます。これをメニュー/デスクトップ/キーボードショートカットに追加して、デフォルトのターミナルを置き換えることができます。
(このアプローチでは、必要に応じて、後でターミナルエミュレータに関する他のことをより簡単にカスタマイズすることもできます。)
私の元の受け入れられた答えは、最近のアップグレード後に私のUbuntu14システムで動作を停止しました。
いずれかを使用
[ -z "$TMUX" ] && command -v tmux > /dev/null && TERM=xterm-256color && exec tmux
また
[ $TERM != "screen" ] && TERM=xterm-256color && exec tmux
ログインすらできなくなります。これを解決できたのは、コンピューターに2回目の管理者ログインがあったためです。
Ubuntu(およびosxでも)での私のための修正は、代わりに実際にtmuxを実行するようにターミナルプログラムを変更することでした。
私はまだ持っています
[ `uname -s` != Linux ] && exec tmux
私の最後の.bashrc
行として、しかしそれは私のMacOSXシステムのためだけになりました。
単一のtmuxセッションが必要な場合は、bashの場合は〜/ .bashrcに、 zshの場合は〜/.zshrcに次のように記述します。
tmux attach &> /dev/null
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi
tmux attach
行は、それが接続するセッションがあるかどうかを確認することであり、セッションがなかった場合は、「セッションなし」に関する警告は表示されません。
私にとっては、リモートマシンにシェルするたびにtmuxを起動し、tmuxをデタッチまたは終了すると、接続が自動的に閉じられるようにしたいと思います。この問題をしばらく掘り下げた後、次のコードは私が望むことを正確に実行し、私の知る限りでは最も最適化されていると考えられています。
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session && exit;}
この行は、最初にロードされることを確認するために、bashrcファイルの最初の行である必要があることに注意してください。execがbashプロセスをtmuxプロセスに置き換えた後、接続するセッションがなくても接続が閉じられるため、「tmuxattach」の前に「exec」呼び出しを置くことはできません。したがって、接続されたセッションをデタッチまたは終了した後、接続を終了するには「exit」呼び出しが必要です。ただし、new-sessionコマンドの前に「exec」を配置すると、それが最後に実行されるコマンドになるため、問題ありません。
次のコード行を、の最後に追加します.bashrc
。
[[ $TERM != "screen" ]] && exec tmux
キーボードショートカットにしました(Linux MintではUbuntuではないので、これが簡単かどうかはわかりません)...
見づらいかもしれませんが、カスタムショートカットはgnome-terminal --window --maximize -e tmux
です。これにより、最大化された新しいgnome-terminal
ウィンドウが開始され、次にexec
utesが表示tmux
されます。
さらに、「通常の」最大化を開始する別のカスタムショートカットがあります(これは、なしでも同じです)。gnome-terminal
-e tmux
どんな端末でも好きなように起動でき、最もカスタマイズ可能な方法なので、これが最良の方法だと思います。
私はこのhttps://wiki.archlinux.org/index.php/Tmux#Bashから始めて、切り離されたセッションを再利用し、すべてのセッションがすでに接続されている場合は新しいセッションを作成するように拡張しました
# .bashrc
case $- in
*i*)
if command -v tmux>/dev/null; then
if [[ ! $TERM =~ screen ]] && [[ -z $TMUX ]]; then
if tmux ls 2> /dev/null | grep -q -v attached; then
exec tmux attach -t $(tmux ls 2> /dev/null | grep -v attached | head -1 | cut -d : -f 1)
else
exec tmux
fi
fi
fi
;;
esac
ログインおよびsshセッションでtmuxを有効にするには、これを.bashrcの末尾に追加します。
# enable tmux at login
PNAME="$(ps -o comm= $PPID)";
if [ $PNAME == "login" ] || [ $PNAME == "sshd" ] ; then
exec tmux
fi
このスクリプトは、bashシェルの親プロセスを探します。bashがログインまたはsshから開始された場合、tmuxが実行されます。これをGUIターミナルで機能させたい場合は、そこに追加することもできます。たとえば、Ubuntuの標準を起動するときにtmuxを自動的に起動する場合は、次のgnome-terminal
ように使用します。
PNAME="$(ps -o comm= $PPID)";
if [ $PNAME == "login" ] || [ $PNAME == "sshd" ] || [ $PNAME == "gnome-terminal" ] ; then
exec tmux
fi
上記をLiveUbuntuデスクトップでテストし、その後ログインすることができました。ログインコマンドを呼び出してログインしない限り、これによってGUIログインが中断されることはありません。これを実行するLinuxGUIを認識していません。
xfce4(私はFedora 24 XFCEスピンを実行しています、それは素晴らしいです)内で、最も簡単な解決策は、パネルのショートカットを編集して実行することです。
xfce4-terminal -e tmux
これと同じコマンドを使用して、キーボードアプリケーションのショートカットを置き換えることができます。
以前に.bashrcにifステートメントを挿入しましたが、ログインが失敗しました(正しいパスワードが入力されるたびにログインボックスにループバックします)。
ThunarのOpenTerminalHereコマンドのコマンドは少し異なります。その後藤を変更するには:
Thunar>編集>カスタムアクションの設定...>ここでターミナルを開き>[編集]ボタンをクリックして、次を置き換えます。
exo-open --working-directory%f --launch TerminalEmulator
使用:xfce4-terminal --working-directory%f -e tmux
端子タイプが256色に正しく設定されていることを確認するワンライナー:
[ -z "$TMUX" ] && export TERM=xterm-256color && exec tmux
追加してみませんか
# If not running interactively, do not do anything
[[ $- != *i* ]] && return
[[ -z "$TMUX" ]] && exec tmux
.bashrcに。zshでも機能します。
https://wiki.archlinux.org/index.php/Tmux#Start_tmux_with_default_session_layoutから取得