GNU画面をログイン「シェル」として使用


22

ログイン、xterm、またはその他の方法で、新しいシェルを開いたときに画面を自動的に実行する最良の方法は何ですか?

最も一般的な推奨事項はexec screen、通常のシェルのrcファイルまたはlogin / profileファイルに置くことですが、たとえば、tcshの場合、ログインシェルは.loginを最後に実行し、非ログインシェルは.cshrcを最後に読み取ります。exec screen.cshrc を入れると、ログインシェルは.loginファイルをソースしません。また、.loginに入れると、非ログインシェルは画面を実行しません。他のシェルにも同様の問題があると思います。


1
これは質問には答えませんが、言及する価値があります。tmuxは画面からの革新的なステップアップであり、画面と互換性のあるキーボードに近づけようとします。このページには、.bashrcから自動的に起動する方法が記載されています。
データシャマン

回答:


19

1つの方法は次のとおりです。

# if $STY is not set...
if [ -z "$STY" ]; then
    exec screen -ARR
fi

これはのためbashに書かれていることに注意してくださいcshすべてのシェル.cshrcに対して実行されるようにします。


もう一つの方法:あなたが簡単にできる設定screenログインシェルとして/etc/passwd自分自身、そしてあなたに次の行を置く~/.screenrc:(コースのパスを、固定します。)

defshell / bin / csh

ただし、これにより/etc/passwd、さまざまなコマンドで定義されたログインシェルを実行するプログラムが破損する場合があります。

編集:画面を追加することを忘れないでください/etc/shells


1
以前にSTY変数について知らなかったので、スクリーンマニュアルで調べている間に、screen with-screenを実行して新しいウィンドウでコマンドを実行できることもわかりました(たとえば、「screen vi」は新しいウィンドウ、制御シェルなし)。ところで、cshの場合、.cshrcではなく.loginファイルに入れます。「すべての」シェルで実行したくないのです。同じことがbashにも当てはまり、.bashrcではなく.profileまたは.bash_loginに入れます。
ハリズフ

4

古い質問ですが、同じことをグーグルで探してここに来たので、このページにつまずく他の人への応答があります。

あなたのディストリビューションがそれを持っているなら、私がこれまでに見つけた最高のものはby風です。ログイン時に実行し、一度に複数の画面を制御するオプションが付属しています。

ある場所でデタッチしてログアウトし、別の場所で同じセッションにログインできます。

画面はサーバープロセスの実行に使用するのに適していますが、by風は日常の作業には適しています。


-2

chshの使用方法:

chsh /usr/bin/screen

これにより、デフォルトのログインシェルが/ etc / passwdに設定されます。(そこにもできました)


その場合、ログイン以外のアカウントで何もすることが難しくなります。また、システム管理者はおそらく/ etc / shellsに画面を持っていません。また、受け入れられた答えを参照してください。
wfaulk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.