EDITAR
As informações abaixo são válidas se você ssh
na máquina e, em seguida, executar o comando que inicia um shell de login:
ssh root@ip
echo $XXXX_LICENSE_FILE
Se você está tentando acessar a variável diretamente do comando ssh
( ssh root@ip echo $XXXX_LICENSE_FILE
), então você está iniciando um shell não-login, não interativo , caso em que nem ~/.bash_profile
nem ~/.bashrc
são lidos. Na página bash
man:
When bash is started non-interactively, to run a shell script,
for example, it looks for the variable BASH_ENV in the envi‐
ronment, expands its value if it appears there, and uses the
expanded value as the name of a file to read and execute.
Bash behaves as if the following command were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for
the file name.
A solução mais fácil seria simplesmente declarar a variável junto com o comando ssh
. Para que isso funcione, você precisa adicionar esta linha ao arquivo /etc/ssh/sshd_config
remoto:
PermitUserEnvironment yes
Em seguida, execute isso na máquina local:
XXXX_LICENSE_FILE=/etc/xxxx.lic && ssh -nq -t -t -t root@$ip /etc/init.d/xxxx.rc start
O problema aqui é a diferença entre o login e os shells interativos. Veja aqui para um bom resumo.
~/.bashrc
é lido apenas ao iniciar um shell interativo (não-login). Quando você ssh
em uma máquina remota, você está executando um shell login , então ~/.bash_profile
ou ~/.bash_login
ou ~/.profile
(nessa ordem) são lidos. Você pode verificar isso executando bash
depois de efetuar o logon no servidor remoto, que iniciará um shell interativo, ~/.bashrc
será lido e sua variável de ambiente será configurada.
Para corrigir isso, defina a variável em seu ~/.bash_profile
em vez de ~/.bashrc
.
Estou assumindo que você está configurando a variável no controle remoto .bashrc
e não no seu local. Se você deseja exportar uma variável local sobre ssh
, dê uma olhada no link Postado por Frederik Deweerdt. A maneira mais fácil seria incluir sua variável na invocação de ssh
:
ssh -nq -t root@ip "FOO=foo BAR=bar"