Acontece que a diferença é uma variável de ambiente $HOME
ausente. Quando $HOME
não está definido no ambiente, nenhum arquivo de inicialização é originado por csh ou tcsh. A falta de uma variável $HOME
é interpretada por csh exatamente como se ela tivesse recebido a opção de linha de comando -f
.
Isso faz sentido ao considerar os arquivos de inicialização do shell ~/.cshrc
e ~/.login
no diretório inicial do usuário. Se $HOME
não estiver definido, esses arquivos específicos do usuário não poderão ser carregados. Mas o csh simplesmente pula procurando por todos os arquivos de inicialização, tanto do sistema quanto do usuário, quando $HOME
não está definido.
Definir $HOME
para qualquer diretório válido antes de executar o script csh, seja o diretório home real do usuário ou até mesmo um diretório temporário vazio, torna a origem csh /etc/csh.cshrc
como esperado.
Eu não encontrei nenhuma documentação para explicar ou descrever este recurso, mas o código-fonte tanto para o bsd-csh quanto para o tcsh confirma esse comportamento.