Eu assumo que você está usando o gnome-terminal, e que o "comando customizado" que você menciona é o comando customizado que o gnome-terminal irá executar ao invés do shell padrão (geralmente bash).
O terminal Gnome é um emulador de terminal. Não tem conhecimento do conceito de variáveis ou expansão variável. É por isso que, se solicitado a executar uma string contendo $PROJECT
, fará exatamente isso, não expandirá $PROJECT
. Expansão variável é o trabalho do shell.
Leia os artigos da Wikipédia sobre terminal e shell para entender melhor a diferença entre um terminal e um shell.
Se eu estiver correto com a suposição de que você está executando o gnome-terminal com um comando personalizado, use este comando personalizado:
bash -c "tail -3000f /home/user1/folder/$PROJECT/folder2/folder3/text.log"
Isto irá dizer ao gnome-terminal para executar o bash com alguns argumentos. Os argumentos dirão bash para executar o comando tail
com alguns argumentos. Só que desta vez, antes de executar tail
, o bash expandirá a variável $PROJECT
antes de executar.
Observe que iniciar o bash usando o parâmetro -c
fará com que o bash não leia os arquivos de inicialização ( .bashrc
e / ou .profile
). Se $PROJECT
for definido em um desses arquivos, o comando acima poderá falhar porque $PROJECT
será expandido para nada.
Você pode forçar o bash a ler os arquivos de inicialização usando o parâmetro -l
:
bash -l -c "tail -3000f /home/user1/folder/$PROJECT/folder2/folder3/text.log"
Note que o bash tem esse conceito de "shell de login" e "shell interativo" com algumas implicações em quais arquivos de inicialização são lidos. Para mais explicações sobre a diferença, leia a seguinte pergunta e respostas: Diferença entre. bashrc e .bash_profile .