毎回tmux
と入力する代わりに、新しいセッションウィンドウで常にtmux
を使用する方法?
ターミナルウィンドウを開いていない状態で開いた場合、最初のセッションはどのようにしてtmux
に配置できますか?
.bashrc
たぶん何か?
warningこれにより「破損」する可能性があります(ターミナルウィンドウを開くことができなくなります-これは良くありません!)Ubuntuログイン。細心の注意を払って、同じ問題が発生した場合にログインできるコンピューター上に2番目の管理者アカウントがあることを確認してください。(other詳細と異なるアプローチについて回答してください。
その警告が与えられた場合、最も簡単な解決策は、tmux
呼び出しを_.bashrc
_の最後に追加することです。
_alias g="grep"
alias ls="ls --color=auto"
# ...other stuff...
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi
_
exec
は、ターミナルを開いたときに開始するbashプロセスがtmux
によってreplacedされるため、_Ctrl-B D
_(つまり、tmuxから切断)は、元のbashプロセスに戻るのではなく、実際にウィンドウを閉じます。
また、if
ステートメントが必要です(現在のbashウィンドウがすでにtmuxプロセスにあるかどうかを検出します)。そうしないと、tmuxを起動するたびに、含まれるbashプロセスが独自のtmuxセッションを開始しようとして無限につながります入れ子になったtmuxenの数は、間違いなく非常に迷惑な場合があります(つまり、見た目はクールです)。
ただし、bashを実行するとtmuxプロセスに変わる可能性があるため、他のプログラムが予期しない方法でbash
を動作させる可能性がある非常に小さなリスクがあります。端末エミュレータを起動します。
私は小さな実行可能シェルスクリプト_~/bin/terminal
_(_~/bin
_を_$PATH
_で使用しているため、自動的に検出されます)を使用します。
_#!/bin/sh
exec gnome-terminal -e tmux
_
(私はgnome-terminalを使用していないので、exec
を削除する必要があるかもしれませんが、わかりません。)
これで、terminal
sciptを実行するたびに、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
行ですが、私のMac OSXシステムで彼だけが使用できるようになりました。
単一のtmuxセッションが必要な場合は、bashの場合は〜/ .bashrcに、zshの場合は〜/ .zshrcに以下を入力します。
tmux attach &> /dev/null
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi
tmux attach
lineは、接続先のセッションがあるかどうかを確認するためのものであり、セッションがなかった場合、「no session」。
私にとっては、リモートマシンにシェル接続するたびにtmuxが開始され、tmuxをデタッチまたは終了すると、接続が自動的に閉じられるはずです。しばらくこの問題を掘り下げた後、次のコードは私が望むことを正確に実行し、私の知る限りでは最も最適化されていると考えられています。
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session && exit;}
この行がbashrcファイルの最初の行であり、最初にロードされることを確認してください。 execがbashプロセスをtmuxに置き換えた後、接続するセッションがなくても接続が閉じられるため、「tmux attach」の前に「exec」呼び出しを置くことはできません。したがって、接続されたセッションをデタッチまたは終了した後に接続を終了するには、「exit」呼び出しが必要です。ただし、実行する最後のコマンドであるため、new-sessionコマンドの前に「exec」を追加しても問題ありません。
私はこれで始めました 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
キーボードショートカットにしました(UbuntuではなくLinux Mintで、これが簡単かどうかわかりません)...
見にくいかもしれませんが、カスタムショートカットはgnome-terminal --window --maximize -e tmux
です。これにより、新しいgnome-terminal
ウィンドウが最大化され、exec
utes tmux
が自動的に開始されます。
さらに、別のカスタムショートカットを使用して、「通常の」gnome-terminal
最大化を開始します(-e tmux
なしでも同じです)。
どんな端末でも好きな方法で起動でき、最もカスタマイズ可能な方法なので、これが最良の方法だと思います。
次のコード行を.bashrc
の最後に追加し、
[[ $TERM != "screen" ]] && exec tmux
ログインおよびsshセッションでtmuxを有効にするには、これを.bashrcの最後に追加できます。
# enable tmux at login
PNAME="$(ps -o comm= $PPID)";
if [ $PNAME == "login" ] || [ $PNAME == "sshd" ] ; then
exec tmux
fi
このスクリプトは、bashシェルの親プロセスを探します。ログインまたはsshからbashが起動された場合、tmashが実行されます。これをGUIターミナルで動作させたい場合は、そこに追加することもできます。たとえば、Ubuntuの標準gnome-terminal
を起動したときにtmuxを自動的に起動する場合、これを使用します。
PNAME="$(ps -o comm= $PPID)";
if [ $PNAME == "login" ] || [ $PNAME == "sshd" ] || [ $PNAME == "gnome-terminal" ] ; then
exec tmux
fi
Live Ubuntu Desktopで上記をテストしましたが、その後ログインできました。ログインコマンドを起動してログインしない限り、GUIログインが中断されることはありません。これを実行するLinux GUIを知りません。
Xfce4(私はFedora 24 XFCEスピンを実行していますが、それは素晴らしいです)内で、最も簡単な解決策は、パネルショートカットを編集して実行することです。
xfce4-terminal -e tmux
この同じコマンドを使用して、キーボードアプリケーションのショートカットを置き換えることができます。
以前に.bashrcにifステートメントを挿入しましたが、ログインが失敗しました(正しいパスワードが入力されるたびにログインボックスにループバックします)。
ThunarのOpen Terminal Hereコマンドのコマンドは少し異なります。そのgotoを変更するには:
Thunar>編集>カスタムアクションの構成...>ここでターミナルを開く>編集ボタン
exo-open --working-directory%f --launchTerminalEmulator
with:xfce4-terminal --working-directory%f -e tmux
端末タイプが256色に正しく設定されていることを確認する1ライナー:
[ -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 から取得