gnome-terminalで複数のタブを開く


16

Railsスタック、rails、spork、およびautotestから3つのサービスを開くコマンドを作成しようとしています。これらのコマンドを個別に実行するには、3つのターミナルを開き、アプリフォルダーに移動して実行します。3つの新しいタブを開いて、それぞれでコマンドを実行することもできます。

問題は、次のようにgnome-terminalを介してタブを開こうとすると失敗することです。

gnome-terminal --tab --title="rails s" -e "rails s" --tab --title="spork" -e "spork" --tab --title="autotest" -e "autotest"

エラー(sporkおよび自動テストの場合):

There was an error creating the child process for this terminal
Failed to execute child process "spork" (No such file or directory)

驚くべきことに、「rails」で動作します(タブには実行中のサーバーが表示されます)。

何か案は?

回答:


9

以下はstackoverflow.comからの回答です

  1. eval "$BASH_POST_RC".bashrcの最後にa を追加します

  2. BASH_POST_RC各タブの環境変数を、実行するコマンドに設定します。例: gnome-terminal --working-directory="/home/zardoz/projects/my_rails_app" --tab -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab -e 'bash -c "export BASH_POST_RC=\"autotest\"; exec bash"'


15

起動gnome-terminal3回と一緒にコマンドを架線&& の意志ではない仕事、およびタブが同じ端末に表示されませんし、実際にあなたが現れ、次のための第一の端子を終了する必要があります。

すべてのタブgnome-terminalが同時に1つのインスタンスで開かれるようにする方法は、--tab-with-profile=PROFILENAMEスイッチを使用することです。以下のコマンドでは、最初のコマンドをgnome-terminal --tab生成する最初のウィンドウのままにすることができます。知っている必要があるのは、使用しているプロファイルだけで--tab-with-profile=YourProfile、他のコマンドを呼び出すために使用できます。これらのコマンドはすべて、開いた元のターミナルに一度に表示されます。

変更されたコマンドは次のとおりです。

gnome-terminal --tab --title="rails s" -e "rails s" --tab-with-profile=Default --title="spork" -e "spork" --tab-with-profile=Default --title="autotest" -e "autotest"

(将来の読者のために:の後に指定したプログラム名に置き換え-e、ここで与えられたコマンドラインアウトテストをし、ためにあなたの目標を覚えて-eインストールしてにする必要があります$PATH。中のものではないため$PATH、このような、例えば、として使用する絶対パス/opt/mike/program

--tab-with-profileスイッチに使用している実際のプロファイルを忘れずに指定してください。の最初の呼び出しでgnome-terminal--tab、すべてを使用する必要があります--tab-with-profile。このメソッドを使用すると、すべてのの同じインスタンスで多数のタブを開くことができるはずですgnome-terminal

右クリックして現在使用しているプロファイルを見つけてプロファイルを見ると、現在使用gnome-terminalしているプロファイルにマーカーが表示されます。

ここに画像の説明を入力してください

詳細については、プロファイルの設定に移動し、プロファイルの名前を確認してください。

詳細についてはman gnome-terminal、およびUbuntuマンページオンラインを参照してください。


でプログラムを起動できない場合はgnome-terminal、場所を$PATHに追加するか、シンボリックリンクを作成して$PATH場所に配置するか、(ここで非常に便利だった)単純なbashラッパースクリプトを作成し、gnome-terminal上記のコマンドラインで呼び出します。(絶対パスで呼び出す必要があります。つまり/location/of/script、名前だけでなく。)

例として:

#!/bin/bash
cd $HOME/.rvm/gems/ruby-2.0.0-p0/bin 
spork
exit 0

次に、スクリプトに名前を付けて実行可能にし、gnome-terminal上記のコマンドラインで呼び出します。問題のあるすべてのnon repoプログラムに対してこれを行います。


プロファイルを知る方法は?(デフォルト、ユーザー名、および〜/ .profileで試しました)
マヌエル

デフォルトと表示されますが、
マヌエル

@Manuelもう1つの可能性は、ターゲットコマンドがあなたの$PATH;にないことでsporkあり、絶対パスで他の場所を指定します。

私が使用しているコマンドはgnome-terminal --tab --title = "rails s" -e "rails s" --tab-with-profile = Default --title = "spork" -e "spork"- tab-with-profile = Default --title = "autotest" -e "autotest"(回答からコピー/貼り付け)。$ PATHについて、これが問題である場合、メニューから開いたタブで機能するのはなぜですか?
マヌエル

@Manuel質問で言うように、「アプリフォルダ」に移動してそこから実行する必要があり$PATHます。答えのメソッドは、同じgnome-terminalウィンドウ内の異なるタブでリポジトリにインストールされたすべてのコマンドラインプログラムを起動するために使用するものであり、他のプログラムは$ PATHにあるため、常に機能します。

0

gnome-terminal --tab -- sh -c "python3 'test.py' ; bash"

このコードは、Pythonスクリプトを実行している端末で新しいタブを開きますが、終了すると、この新しいタブは閉じません。このコードの最後に「bash」を追加したためです...

複数回必要な場合は、bashスクリプトのwhileループに入れてください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.