Nossa solução envolverá duas etapas.
- Pass Variável de ambiente contendo o caminho para o script que você deseja originar para a nova
tcshinstance. - Tem
tcshsource 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
AcceptEnvem/etc/ssh/sshd_configpara permitir que a variável de ambienteSOURCESCRIPTseja passada (por exemplo,AcceptEnv SOURCESCRIPT), definaSOURCESCRIPTno 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