私はあなたが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の違いを。