ssh example.com somecommand
não lê seu ~/.profile
; somecommand
é executado diretamente pelo daemon ssh. Quando você não especifica um comando, o daemon ssh chama seu shell de login, que lê seu ~/.profile
. (Substitua ~/.bash_profile
, ~/.zprofile
ou ~/.login
dependendo do seu shell de login.)
Existem algumas maneiras de definir variáveis de ambiente para um comando não interativo, mas todas exigem uma configuração na configuração do servidor, normalmente desativada por padrão. Assumindo um OpenSSH recente em ambos os lados:
-
Você pode ter variáveis de ambiente enviadas do cliente para o servidor com a diretiva
SendEnv
em~/.ssh/config
. A variável de ambiente específica deve ser ativada com uma diretivaAcceptEnv
na configuração do servidor . -
Você pode definir variáveis de ambiente por meio de
~/.ssh/environment
no lado do servidor. Isso deve ser ativado na configuração do servidor com a diretivaPermitUserEnvironment
. -
Supondo que você use autenticação baseada em chave, você também pode definir variáveis por origem em
~/.ssh/authorized_keys
: adicioneenvironment="FOO=bar"
no início da linha relevante. Novamente, você precisa da diretivaPermitUserEnvironment
na configuração do servidor.
Se você não puder ou não quiser alterar a configuração do servidor, será necessário gravar o caminho completo para o comando remoto ou fornecer explicitamente seu .profile
no comando remoto.
ssh [email protected] -Y '. ~/.profile; netbeans'
ssh [email protected] -Y '/path/to/netbeans'