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


9

などの特定のディレクトリでターミネータを開き/home/downloads/、コマンドを実行したい。

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

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

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

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


どのコマンドを実行しますか?実行するだけです。ターミネータを開くたびにこれが自動的に行われるようにしますか?してください編集あなたの質問と私)あなたが何をしたいのかを明確およびii)あなたはそれがターミネータのオプションにあった、この「カスタムコマンド」を設定し、正確にどのように教えていただけましたか?
terdon

はい、ターミネーターを実行した後、最初のコマンドと2番目のコマンドを自動的に実行したいのですが、最初のコマンドを実行する方法だけがわかって機能しますが、2番目のコマンドを実行する方法がわかりません。最初のコマンドは次のとおりです。任意のカタログへの "cd"。2番目のコマンドは、このカタログ内かどうかに関係なく、任意の必要があります。質問を編集します。私の醜い言葉でごめんなさい。
Asq

回答:


4

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


3

私はターミネーターで仮想環境をアクティブ化するのと同じ問題がありました。

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


指定したコマンドがctrl + cで終了できない理由は何ですか?
Flowkap

2

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

cd /home/downloads; ls; bash

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

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

表示されrakeないのは、デフォルトのパスにないためです。使用するには、パスを指定する必要があります。したがって、最初に端末で次のコマンドを実行します。

type rake

それはのようなものを返します/foo/bin/rakeそれがあなたが必要とする道です。それを取り、上記のカスタムコマンドに追加します。

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

はい、これは知っていますが、「ls」コマンドは機能しますが、1。たとえば、「rake」コマンドが機能せず、ターミナルにエラーが表示されます:「/ bin / bash:rake:command not found」2.いくつかのエイリアスがあります。例 "cd / home / downloads; 'aliasname'; bash"も機能せず、ターミナルに同じエラーが表示される
Asq

@Asqええ、そうです。そのため、実行するコマンドを教えてくださいお願いしました。質問を編集して具体的な例を挙げてください。エイリアスは機能しません。これは忘れることができますがrake、フルパスを使用する場合は必要です/path/to/rake
terdon

主な質問を編集する必要がありますか?そして、「フルパス/ path / to / rakeを使用する場合」とはどういう意味ですか?私は常にrakeを使用しているディレクトリにcdしますが、「cd / path / to / rake; rake; bash」は機能しません
Asq

@Asqはい、元の質問を編集してください。しないでcd /path/to/rake; rake; bashください/path/to/rake; rake; bash
terdon

:(私は/ home / 123ディレクトリにいるときにrakeコマンドを使用します。ここでカスタムコマンドにこれを追加します: "/ home / 123; rake; bash"ですが、コンソールに2つのエラーが表示されます:1. / bin / bash:/ home / 123:これはカタログ2
です。/

1

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

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


1

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