特定のディレクトリ(たとえば、/home/downloads/
)でターミネーターを開き、コマンドを実行します。
私はこの「カスタムコマンド」で最初の部分を実行しました:cd /home/downloads; bash
ターミネーターはこのディレクトリで起動しますが、2番目の部分をどのように実行できますか?
ターミネーターがダウンロードディレクトリで起動したので、ls
やrake
コマンドなど、必要なコマンドを実行するか、コマンドとしていくつかのエイリアスを使用します。これどうやってするの?
ターミネーターでマウスの右ボタンを押し、[パラメーター]、[レイアウト]の順に選択して、[カスタムコマンド]セクションにテキストを追加します。
これらはすべて、ターミネーターの起動後に自動的に実行する必要があります。
カスタムコマンドとしてcd /home/downloads; exec bash
を実行します。 (exec
ビルトインは、bash
が端末エミュレータの子になることを保証します。それがないと、孫になる可能性があります。)コマンドラインでterminator -e 'cd /home/downloads; exec bash'
を実行できます。 。
エイリアスは~/.bashrc
によって定義されているため、カスタムコマンドでエイリアスを使用することはできませんが、そのファイルはインタラクティブシェルによってのみ読み込まれ、ターミナルエミュレーターとスクリプトの間の接着剤として使用されるスクリプトシェルによっては読み込まれませんシェル。エイリアスを使用する場合は、明示的にロードする必要があります。別のファイルに保存すると、次のようになります
. ~/.bash_aliases; cd /home/downloads; exec bash
またはコマンドラインで
terminator -x bash -c '. ~/.bash_aliases; cd /home/downloads; exec bash'
エイリアスが~/.bashrc
にある場合は、. ~/.bashrc
を使用しますが、シェルはインタラクティブではないため、.bashrc
にエラーが発生する可能性があることに注意してください。これが発生した場合、最も簡単な解決策は、エイリアス(およびグルーコードで使用する関数とその他の設定)を別のファイルに分割し、.
を使用して.bashrc
のエイリアスを含めることです。
ターミネーターで仮想環境をアクティブにする でも同じ問題が発生しました。
トリックは、「1つの」コマンドbash
ですべてを実行することです。 -i
オプション(インタラクティブ)を利用して、カスタム--rcfile
を使用します。ここで、Prompt_COMMAND
は実行するものに設定されています。結果は次のようになります。
command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export Prompt_COMMAND="your commands; go here; unset Prompt_COMMAND"') -i"
your commands; go here;
を実際のコマンドに置き換えるだけです。 説明についてはこの回答を参照してください 。
最初のコマンドを追加したのと同じ方法で、他のコマンドを追加します。たとえば、ls
を実行するには:
cd /home/downloads; ls; bash
これをプロファイルの「コマンド」オプションに追加できます。
rake
が表示されないのは、デフォルトパスにないためです。使用するには、パスを指定する必要があります。したがって、最初に端末で次のコマンドを実行します。
type rake
これは/foo/bin/rake
のようなものを返します。 Thatは必要なパスです。それを取り、上記のカスタムコマンドに追加します。
cd /home/downloads; /foo/bin/rake; bash
これはエイリアスでは機能しません。エイリアスはシェルによって設定され、ここでは利用できません。回避策は、代わりにスクリプトを使用することです。したがって、次のようなエイリアスがある場合:
alias foo="command1 argument2"
スクリプトを作成し、それをfoo.sh
と呼び、/home/youruser/bin
に次の内容で保存します。
#!/usr/bin/env bash
command1 argument2
そしてそれを実行可能にします:
chmod a+x /home/username/bin/foo.sh
次に、「カスタムコマンド」セクションで、次を使用します。
cd /home/downloads; /home/username/bin/foo.sh; bash
開いているターミネーターウィンドウを右クリックすると、「設定」を選択できます。 「プロファイル」を選択し、そこから「コマンド」タブを選択します。 「シェルの代わりにカスタムコマンドを実行する」というタイトルのチェックボックスがあります。
私はそれがあなたが探しているものだと信じています。
'command =
'を使用してディレクトリを変更しないでください。実際のコマンドに使用してください!
.config/terminator/config
を編集するときは、
directory = <dir>
'ターミナルを指定されたディレクトリに自動的にcdする場合、またはcommand = <cmd>; <your_Shell>
'例えば:
端末を起動時に<dir>
にcdするだけの場合は、「ディレクトリ」を指定し、「コマンド」を空のままにします。
[[terminal7]]]
directory = /home/dan/src/wmc
order = 1
parent = child3
profile = default
type = Terminal
uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8
カスタムコマンドのみを実行する場合は、コマンドのみを指定します。
[[terminal7]]]
command = /home/dan/mine/my-custom-command
order = 1
parent = child3
profile = default
type = Terminal
uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8
両方をDIRにcdしてコマンドを実行する場合:
[[terminal7]]]
directory = /home/dan/dl-dir
command = /home/dan/mine/my-custom-command-to-run-in-dlDIR
order = 1
parent = child3
profile = default
type = Terminal
uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8