Nossa solução envolverá duas etapas.
- Pass Variável de ambiente contendo o caminho para o script que você deseja originar para a nova
tcsh
instance. - Tem
tcsh
source o script apontado por esta variável de ambiente
Para a etapa 1%,ssh
executará o comando especificado em seu shell padrão (aquele no /etc/passwd
do servidor de destino), portanto, darei várias soluções para isso.
- Se o shell de destino for
sh
/bash
: Conecte-se ao servidor ssh com o comando:ssh -t user@host 'export SOURCESCRIPT=/tmp/tmp.sh; exec /usr/bin/tcsh'
- Se o shell de destino for
csh
/tcsh
: Conecte-se ao servidor ssh com o comando:ssh -t user@host 'setenv SOURCESCRIPT /tmp/tmp.sh; exec /usr/bin/tcsh'
- Se você puder modificar a configuração do servidor ssh do destino, adicione / modifique a opção
AcceptEnv
em/etc/ssh/sshd_config
para permitir que a variável de ambienteSOURCESCRIPT
seja passada (por exemplo,AcceptEnv SOURCESCRIPT
), definaSOURCESCRIPT
no ambiente local e conecte com o comando:ssh -t -o SendEnv=SOURCESCRIPT user@host 'exec /usr/bin/tcsh'
Para o passo 2, modificamos ~/.tcshrc
para adicionar o seguinte:
if $?SOURCESCRIPT then
source $SOURCESCRIPT
endif