Alguns usuários de Linux (incluindo eu mesmo) têm tentado sem sucesso executar um comando via SSH, por exemplo, na forma:

ssh user@host mycommand


O problema parece ser que "mycommand" está em um diretório que não está no PATH. Entretanto, quando eles conectam normalmente, eles podem checar e o diretório está listado em PATH.

O que acontece é que a maioria destes usuários (de novo, me incluindo) atualizam a variável PATH no arquivo/script .bashrc e, aparentemente, o arquivo .bashrc não é executando de forma "não interativa" pelo ssh.

Depois de procurar por um bom tempo, achei muitas pessoas sugerindo checar se o .bashrc era chamado pelo arquivo .profile ou .bash_profile ou algo assim. Bem... isso não resolvia meu problema.

O que acontece de fato é que .bashrc estava sendo chamado (ou "sourced", como alguns chamam) pelo ssh, mas os caras da distro decidiram adicionar as seguintes linhas no arquivo:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return


Basicamente, o teste acima somente permite a execução do resto do script se executando por um shell interativo, portanto não funciona para minhas necessidades. Porque isto está lá? Não tenho a menor idéia... mas... de qualquer forma... comentei o teste e tudo funcionou perfeitamente.
 

 


Comments

No comments yet. You can be the first!

Leave comment

You must be logged in as a member to add comment to this blog
« Prev itemNext item »