Alguns usuários de Linux (incluindo eu mesmo) têm tentado sem sucesso executar um comando via SSH, por exemplo, na forma:
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:
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.
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.