web-dev-qa-db-ja.com

新しいターミナルウィンドウを開いたときにGNU Screenを自動的に起動するにはどうすればよいですか?

Ubuntu 14.04(Cinnamon Mint 17.1)とBashを実行しています。新しいターミナルウィンドウを開くたびに、screenと入力してスクリーンウィンドウマネージャーを起動しますが、シェルにこれを実行してもらいたいです。

.bashrcの代わりに.profileを変更する必要があると思うので、ログオン時だけでなく、すべての新しいターミナルウィンドウで開始します。そこで、Shellプロセスを置き換えるために、次を.bashrcの最後に追加しました。

exec /usr/bin/screen -q

新しいターミナルウィンドウを起動すると:

  • 通常、カーソルが点滅する空のウィンドウが表示され、Ctrl+Cを押した後にのみBashプロンプトが表示されます。
  • 時々、Ctrl+Cを押すか、ターミナルウィンドウのサイズを変更すると、ターミナルウィンドウがすぐに閉じます。
  • 時々、$LS_COLORSなしでBashプロンプトが表示されます(これを再現するのは難しいので、いつ、またはなぜそれが起こるのか完全にはわかりません)。

なぜこれが私にとって失敗しているのかを説明し、解決策を提案できますか?

おかげで、

ふう

7
Huw Walters

画面が起動すると、最初のウィンドウがシェルを起動し、画面を起動するようシェルに指示しました。次に、画面が起動すると、最初のウィンドウがシェルを起動し、画面を起動するようシェルに指示しました。その後、画面が起動すると......

泡立て、すすぎ、繰り返します。

screenは$TERM変数を"screen"に設定します。そのため、.bashrcで終わる可能性のあるscreenの無限の再帰呼び出し( "turtles all the way down")を避けるために:

[[ $TERM != "screen" ]] && exec screen -q
5
glenn jackman