
UNIX: The Complete Reference, segunda edição por Kenneth H. Rosen et al.
Você pode iniciar outro shell após efetuar login usando o nome do shell como um comando; por exemplo, para iniciar o shell Korn, você pode digitar ksh no prompt de comando. Este tipo de shell não é um shell de login e você não precisa fazer login novamente para usá-lo, mas ainda é um shell interativo, o que significa que você interage com o shell digitando comandos (em vez de usar o shell para execute um script, conforme discutido no Capítulo 20). As instâncias do shell executadas em uma janela de terminal quando você está usando uma interface gráfica também são shells interativos sem login. Quando você inicia um shell sem login, ele não lê seu arquivo .profile, .bash_profile ou .login (ou seu arquivo .logout), mas ainda lê o segundo arquivo de configuração do shell (como .bashrc). Isso significa que você pode testar alterações em seu .bashrc iniciando outra instância do shell, mas se estiver testando alterações em seu .profile ou .login, você deverá efetuar logout e login novamente para ver os resultados.
Eu estava lendo as linhas acima e não entendi o que significa shell interativo. É verdade que .profile não é lido se eu estiver usando o terminal?
Além disso, o que significa quando você diz que bourne não é um shell interativo enquanto bash/csh é um shell interativo?
Responder1
Um shell interativo é simplesmente qualquer processo de shell usado para digitar comandos e recuperar a saída desses comandos. Ou seja, um shell com o qual você interage.
Portanto, seu shell de login é interativo, assim como qualquer outro shell iniciado manualmente, conforme descrito no trecho citado em sua pergunta. Por outro lado, quando você executa um script de shell, é iniciado um shell não interativo que executa os comandos no script e sai quando o script é concluído.
O shell Bourne pode ser usado como um shell interativo, assim como bash
ou tcsh
. Na verdade, muitos sistemas, como o FreeBSD, usam sh
como shell de usuário padrão. Shells modernos como bash
, zsh
, tcsh
, etc possuem muitos recursos que o shell Bourne não possui, que os tornam mais confortáveis e convenientes para uso interativo (histórico de comandos, conclusão, etc).
Shells interativos sem login (ou seja, shells que você inicia manualmente a partir de outro shell ou abrindo uma janela de terminal) não leem seus arquivos .login
ou .profile
. Eles são lidos e executados apenas por shells de login (shells iniciados pelo login
processo do sistema ou pelo gerenciador de exibição X), portanto, os comandos e configurações que eles contêm são aplicados apenas uma vez, no início da sua sessão de login. Portanto, quando você inicia um terminal, o shell que ele gera para você não lê seus arquivos de login ( .login
para shells estilo c, .profile
para shells estilo bourne), mas lê os arquivos .cshrc
, .bashrc
etc.