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
SendEnvem~/.ssh/config. A variável de ambiente específica deve ser ativada com uma diretivaAcceptEnvna configuração do servidor . -
Você pode definir variáveis de ambiente por meio de
~/.ssh/environmentno 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 diretivaPermitUserEnvironmentna 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'