変数を使用したターミナルのカスタムコマンド


1

Redhat Linux Enterprise

ターミナルプロファイルの編集-シェルのカスタムコマンドの代わりにカスタムコマンドを実行します。

tail -3000f /home/user1/folder/$PROJECT/folder2/folder3/text.log

保存して再起動すると、次の結果が得られます。

tail: cannot open `/home/user1/folder/$PROJECT/folder2/folder3/text.log' for reading

このパスを別の端末に直接コピーすると、テーリングは正常に機能します。カスタムコマンドは$ PROJECT変数を自動的にエスケープしますか?


アクセス権とは何ですか?(LS-Lの/home/user1/folder/$PROJECT/folder2/folder3/text.logの出力)
LR

-rw-r--r--「あと4つ」
ダーク

「あと4つ」とはどういう意味ですか?より重要な質問は-この修正で何を達成したいですか?
LR

(あと4つはコメントのSOの最小文字数でした)端末の起動時にログを追跡できるようにしたいです。tailするファイルのパスはプロジェクトごとに異なります。
ダーク

では、「端末プロファイルの編集-シェルのカスタムコマンドの代わりにカスタムコマンドを実行:」で入力したコマンドはどこにありますか?〜/ .bashrcファイルにありますか?
-LR

回答:


2

私はあなたがgnome-terminalを使用しており、あなたが言う「カスタムコマンド」はデフォルトのシェル(通常bash)の代わりにgnome-terminalが実行するカスタムコマンドであると仮定します。

Gnome-terminalはターミナルエミュレータです。変数または変数展開の概念に関する知識はありません。そのため、を含む文字列を実行するように指示された場合、それは実行されますが$PROJECT、展開されません$PROJECT。変数展開はシェルの仕事です。

ターミナルシェルについてのウィキペディアの記事を読んで、ターミナルシェルの違いをよりよく理解してください。

カスタムコマンドでgnome-terminalを実行しているという仮定が正しい場合、代わりにこのカスタムコマンドを使用する必要があります。

bash -c "tail -3000f /home/user1/folder/$PROJECT/folder2/folder3/text.log"

これにより、gnome-terminalにいくつかの引数を指定してbashを実行するように指示します。引数は、bashにtailいくつかの引数を指定してコマンドを実行するように指示します。今回だけtail、bashは$PROJECT実行前に変数を展開します。

パラメーター-cを使用してbashを開始すると、bashが初期化ファイル(.bashrcおよび/または.profile)を読み取らないことに注意してください。$PROJECTそれらのファイルのいずれかで定義されている場合、上記のコマンドは$PROJECT何も展開されないため失敗する可能性があります。

-lパラメーターを使用して、bashに初期化ファイルを強制的に読み取らせることができます。

bash -l -c "tail -3000f /home/user1/folder/$PROJECT/folder2/folder3/text.log"

bashには、「ログインシェル」と「対話型シェル」というこの概念があり、どの初期化ファイルが読み取られるかについていくつかの意味があることに注意してください。差のより多くの説明については、次の質問と回答をお読みください。bashrcにと.bash_profileの違いを


0

そのコマンドをファイルに入れて、そのファイルを調達するか、実行可能にしてスクリプトのように実行しますか?環境がスクリプトに渡されていない可能性があります。$ PROJECTは環境変数(export'edまたはsetenv'ed)ですか、それとも現在のシェルの変数ですか?

bashまたはshを使用している場合は試すことができexport $PROJECTます。csh/ tcshを使用している場合は試すことができますsetenv PROJECT=(the value of $PROJECT)


エクスポートされた-私は/ home / user1 /.../$ PROJECT / ...を別の端末に持ち込むとうまく動作する。
ダーク

この端末ウィンドウの起動時にプロファイルが適切に取得されていない可能性があります
Dirk

0

ちょっとした推測-試してみてください:

tail -3000f /home/user1/folder/${PROJECT}/folder2/folder3/text.log

$ PROJECTの代わりに$ {PROJECT}として記述された変数を使用します。残念ながら、テストすることはできません。


いや; 現在は... / $ {PRJ_NAME} / ...を出力します:)
Dirk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.