web-dev-qa-db-ja.com

シェルから新しいシェルを開いて切り替えることはできますか?

uNIX/Linux環境のターミナル内からシェルまたは新しいターミナルのものを開くことができるかどうか疑問に思っています。特に、GUIがないコマンドラインのみ。これは実行可能ですか?どうすればいいのですか?

1
DCIndieDev

screen(1)を実行します。ターミナルマルチプレクサです。これにより、画面の下で実行される複数のシェルを作成して、切り替えることができます。画面から「切り離す」と元のシェルに戻り、「再接続」してそれらのシェルに戻ることができます。

tmux(1)もあり、ほとんど同じことをします。また、一部のユニスでは、window(1)またはsplitvt(1)。しかし、screen(1)は最も普及しており、おそらく最も簡単に助けを見つけることができるツールです。

6
Phil P

Zshでこれを行うには、suspendを実行して2番目のシェルから最初のシェルに切り替え、fgを実行して最初のシェルから2番目のシェルに切り替えます。

suspendの代わりにkill -STOP $$を使用すると、bashで同様のことができるはずです。

しかし GNU screen または tmux の方が簡単でしょう。

1
Mikel

デフォルトでは、Linuxでは複数の仮想コンソールを切り替えることができます。通常はAlt +ファンクションキーの1つ(通常はF1からF7)を押します。使用可能なコンソールの数は、カーネルのコンパイル時にNR_CONSOLESディレクティブがどのように設定されたかによって異なり、ディストリビューションによって異なる場合があります。

別のシェルをフォークしたい場合は、バイナリを実行するだけです。例:/bin/bash(bashは通常あなたのパスにあるので、単にうまく機能します)。バックグラウンドに送信するか、スクリーンセッションで実行しない限り、これによって古いシェルが使用可能になることはありません。

デスクトップ環境を使用していてターミナルウィンドウを実行している場合は、通常、キーをマップして、環境からより多くのターミナルウィンドウを起動できます。私はGNOMEとKDEがこの能力を持っていることを知っています。 ALT + TABでグラフィカルウィンドウを切り替えることができます。

ユースケースのシナリオを教えていただければ、おそらくより適切な解決策を見つけることができます。

0
John T