Não sei por que você quer fazer isso, mas você pode:
exec env -i /home/path/to/my/zsh
Provavelmente, muitas coisas não funcionarão corretamente, pois você perderá algumas variáveis de ambiente essenciais, como $PATH
, $HOME
ou $TERM
.
Se você quiser colocar algumas variáveis na lista de permissões e remover o restante:
exec env -i HOME="$HOME" TERM="$TERM" /home/path/to/my/zsh
Se você quiser restaurar o ambiente no momento em que o tcsh
foi iniciado, insira-o no início de ~/.tcshrc
:
sh -c 'export -p' > ~/.initial-env
E então faça algo como:
exec env -i sh -c ". $HOME/.initial-env; exec /path/to/zsh"
Isso é salvar o ambiente quando tcsh
for iniciado e restaurá-lo quando você executar zsh.
Se o que você quer é mudar o seu shell para zsh
enquanto você não tem a possibilidade de fazer um chsh
(ou zsh
não está instalado ou o instalado tem 20 anos), (traz de volta memória de mais de 15 anos atrás (caramba!) quando eu estava na mesma situação (embora com csh
em vez de tcsh
)), você pode substituir o conteúdo de seu ~/.login
com:
setenv SHELL /path/to/zsh
exec $SHELL -l
E remova seu .tcshrc
A configuração $SHELL
especifica sua preferência de shell (é para isso que aplicativos como xterm
ou vi
... serão iniciados quando precisarem iniciar um shell para você).
Colocá-lo no seu ~/.login
deve garantir que seja feito apenas uma vez. Esperançosamente, não mais tcsh
seria iniciado mais tarde durante a sua sessão de login, uma vez que você alterou $SHELL
. Não importa se você colocou suas definições de variáveis de ambiente em ~/.login
ou ~/.zprofile
ou ~/.profile
. Depende de você.
Teste com tcsh -l
antes de sair.