Bash で新しいターミナル セッションを開始する

Faaiq Bilal 2023年6月20日
  1. gnome-terminal コマンドを使用して Bash で新しいターミナル セッションを開始する
  2. Bash の同じターミナルで新しいタブを開く
Bash で新しいターミナル セッションを開始する

さまざまな状況で、Bash やその他のシェルを使用しているときに、新しいターミナル インスタンスまたは同じターミナルの別のタブでスクリプトまたはプログラムを実行する必要が生じる場合があります。 ターミナル内から新しいターミナル インスタンスまたはタブを開くのは簡単です。 十分な例を挙げて詳しく説明します。

Note
この記事の例は、ほとんどの LINUX ディストリビューションで一般的な GNOME デスクトップ環境を実行しているシステム用です。

gnome-terminal コマンドを使用して Bash で新しいターミナル セッションを開始する

すでに実行中のインスタンスから新しいターミナルを起動するには、単純なコマンド gnome-terminal を使用する必要があります。 これにより、新しい端末インスタンスが開始され、新しいウィンドウが開きます。

新しいターミナルを開いて、すでに実行中のインスタンスからプログラムを実行したい場合、このタスクを達成するにはいくつかの方法があります。

gnome-terminal -x "complete/path/of/the/program" &

上記のコマンドは、新しい端末で目的のプログラムを実行します。 実行するプログラムの完全なパスを提供することが重要です。

コマンドの最後の & は、このタスクを元の端末インスタンスのバックグラウンドに移動します。 コマンドの最後に & を追加しないと、新しい端末が初期化される前にプログラムが実行を試みる可能性があるため、エラーが発生する可能性があります。

bash -c オプションを gnome-terminal コマンドで使用して、新しいターミナルで複数の Bash コマンドを実行できます。

gnome-terminal コマンドの構文は次のとおりです。

gnome-terminal --command="bash -c '[cmd1]; [cmd2]; $SHELL'"

ここで --command="bash -c" は新しい端末にこれらが Bash コマンドまたはスクリプトであることを伝え、cmd1cmd2 はそれぞれ最初と 2 番目のコマンドの名前を表します。

コマンドの最後にある $SHELL は、コマンドの完了後もターミナルを開いたままにします。

上記の例の代替構文は次のとおりです。

gnome-terminal -x bash -c "<cmd>; exec bash"

このコマンドの最後にある exec bash は、$SHELL と同じ目的を果たします (つまり、コマンドの実行後にターミナルを開いたままにします)。

Bash の同じターミナルで新しいタブを開く

場合によっては、複数のターミナル ウィンドウを開きたくない場合があります。追跡が困難になる可能性があるからです。 このような状況では、同じターミナルで新しいタブを開くことをお勧めします。

新しい端末タブを開くコマンドは次のとおりです。

gnome-terminal --tab

これを上記の例と組み合わせて、次のようなコマンドを新しいターミナル タブで実行できます。

gnome-terminal --tab -x bash -c "<cmd>; exec bash"

上記のコマンドは、GNOME 環境をサポートするシステム用であることに注意してください。

macOS の場合、次を使用して、既に実行中のターミナルから新しいターミナルでコマンドを実行できます。

osascript -e 'tell app "Terminal" to do script "cmd"'

これにより、新しいターミナルが開き、新しく作成されたターミナルで cmd コマンドが実行されます。