No tcsh, os aliases são locais para a instância do shell em que estão definidos. É necessário que eles sejam redefinidos em cada subshell. Quando o tcsh inicia, ele lê os comandos de $HOME/.tcshrc
(ou $HOME/.cshrc
, se isso não existir); presumivelmente você tem seus aliases aqui.
O comando sudo -i
"simula um login inicial" definindo $HOME
(e várias outras variáveis de ambiente) para o usuário alvo.
Além disso, versões recentes do sudo removem $HOME
do ambiente se o a opção env_reset
está presente em /etc/sudoers
.
Portanto, para tornar a origem do shell raiz o .tcshrc
do usuário que chama o sudo, use sudo -s
e adicione a seguinte linha a /etc/sudoers
:
Defaults env_keep += HOME
Como alternativa, você pode adicionar o seguinte a /root/.tcshrc
:
if ( $?SUDO_USER ) then
source ~$SUDO_USER/.tcshrc
endif