Eu não acho que isso possa ser feito.
Primeiro de tudo eu tive que reescrever seu comando; embora isso seja anulado pelo fato (veja adiante) de que o que você deseja obter não pode ser alcançado, ainda que o método para isso seja de algum interesse e generalidade, então eu irei discuti-lo. Eu tive que mudar o seu comando para ssh me@remote 'COLOR=("echo" "-ne" "\"\033[48;5;95;38;5;214m\$HOSTNAME3[0m\""); export PROMPT_COMMAND=${COLOR[@]}'
O motivo é que é necessário evitar que o shell local substitua o valor $HOSTANME
its local
, portanto, o que passamos para o servidor remoto deve ser colocado entre aspas simples, ' . Para que isso funcione, deve haver no aspas simples dentro do comando para passar, então eu tive que reescrevê-lo de tal forma que nenhuma aspas simples aparecem no comando para serem executadas remotamente. Eu consegui fazer isso com uma matriz, COLOR
. O comando
COLOR=("echo" "-ne" "\"\033[48;5;95;38;5;214m\$HOSTNAME3[0m\"") export PROMPT_COMMAND=${COLOR[@]}
funciona bem localmente (a escolha das cores é minha).
Existem duas maneiras de exportar variáveis de ambiente via ssh. Primeiro, pode-se alterar a variável AcceptEnv
no arquivo /etc/ssh/sshd_config
do servidor: mas o manual indica p>
AcceptEnv
Specifies what environment variables sent by the client will be copied into the session's environ.
A ênfase aqui está na sessão : nenhuma mudança global.
A segunda maneira é através da variável PermitUserEnvironment
:
PermitUserEnvironment
Specifies whether ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys are processed by sshd. The default is "no". Enabling environment processing may enable users to bypass access restrictions in some configurations using mechanisms such as LD_PRELOAD.
Como você pode ver, ssh
é bastante cuidadoso em não , permitindo que um usuário remoto altere variáveis de ambiente global.