web-dev-qa-db-ja.com

必要なディレクトリでターミネータを実行してから、必要なコマンドを実行します

特定のディレクトリ(たとえば、/home/downloads/)でターミネーターを開き、コマンドを実行します。

私はこの「カスタムコマンド」で最初の部分を実行しました:cd /home/downloads; bashターミネーターはこのディレクトリで起動しますが、2番目の部分をどのように実行できますか?

ターミネーターがダウンロードディレクトリで起動したので、lsrakeコマンドなど、必要なコマンドを実行するか、コマンドとしていくつかのエイリアスを使用します。これどうやってするの?

ターミネーターでマウスの右ボタンを押し、[パラメーター]、[レイアウト]の順に選択して、[カスタムコマンド]セクションにテキストを追加します。

これらはすべて、ターミネーターの起動後に自動的に実行する必要があります。

9
Asq

カスタムコマンドとして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;を実際のコマンドに置き換えるだけです。 説明についてはこの回答を参照してください

3
Peque

最初のコマンドを追加したのと同じ方法で、他のコマンドを追加します。たとえば、lsを実行するには:

cd /home/downloads; ls; bash

これをプロファイルの「コマンド」オプションに追加できます。

enter image description here

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
2
terdon

開いているターミネーターウィンドウを右クリックすると、「設定」を選択できます。 「プロファイル」を選択し、そこから「コマンド」タブを選択します。 「シェルの代わりにカスタムコマンドを実行する」というタイトルのチェックボックスがあります。

私はそれがあなたが探しているものだと信じています。

1
rcjohnson

'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
    
1