Uma vez um amigo meu (que é um usuário experiente do Unix / Linux) me disse que configurar o shell do root para algo diferente de sh (por exemplo, bash ou zsh) pode criar problemas, porque alguns scripts podem assumir que o shell é sh e fazer algo estranho .
No entanto, acho que o Ubuntu tem o shell raiz padrão definido como bash, e o Gentoo também usa o bash. Alguém pode rebentar o mito?
bash
. Inicializei no modo de usuário único para corrigir, mas funcionou apenas porque/bin/sh
ainda estava vinculado aoFBSD
fork dobourne
e nãobash
.zsh
e de alguma forma/usr
estiver danificado terei problema? mas meu sistema tem/bin/sh
apontando para/bin/bash
ebash
em si, por que nãosh
ser afetada?zsh
não deve estar/usr/bin/
se estiver instalado errado. todas as conchas devem ser em/bin
/bin
mas mantém alguns arquivos/usr/share
. Também afirmei claramente que o problema ocorre durante o login durante a inicialização (quando algum serviço falha).Não deve ser um problema.
Os arquivos de script de shell codificam explicitamente com qual shell eles são executados. É codificado na primeira linha ou outros programas ou scripts executam um shell específico e fornecem o script como argumento.
O único programa em que consigo pensar que usa as informações do shell da conta do usuário (além do processo de login) é o procmail. Muito engraçado se seu usuário definiu como shell / bin / false no servidor de e-mail ... Mas você normalmente não executa o procmail como root.
Outro candidato seriam as linhas no crontab da raiz. Não sei qual é a política de crond qual shell usar.
fonte
Os scripts escritos para o bourne shell serão executados na maioria das vezes contra BASH ou ZSH ou $ foo sem problemas.
Em muitos sistemas Linux, nenhum sh original é instalado; em vez disso, geralmente é um link simbólico contra / bin / bash.
Se alguns scripts simplesmente "assumem" que o shell é explicitamente sh, eles devem ser reescritos. Existe o mecanismo shebang para escolher qual intérprete seu script precisa. Se for o sh, o script deve incluir
#!/bin/sh
como a primeira linha.Sua configuração padrão do shell não deve ser relevante neste contexto.
fonte
Não acho que alterar o shell da raiz possa causar problemas. Eu me lembro de alguns unices (talvez algumas variantes do BSD?) Tendo tcsh como o shell padrão para root.
Os logins raiz são raros de qualquer maneira. Normalmente, você faria login em sua própria conta e, em seguida, su ou sudo para fazer root.
O que importa é que o shell do root deve ter o menor número possível de dependências, para poder ser usado em um contexto de reparação do sistema. Por exemplo, é uma boa idéia ter um shell raiz vinculado estaticamente; algumas distribuições fornecem uma versão vinculada estaticamente do bash ou zsh ou sash (um shell com muitos utilitários padrão integrados). No entanto, isso não é tão importante se o seu sistema puder ser inicializado facilmente a partir de um CD de recuperação ou unidade USB.
fonte
O shell de logon de um usuário não afeta o processo de inicialização. Você pode definir esse shell para o que quiser. Nem todos os sistemas possuem bash e funcionam bem. Além disso, se é
/usr/bin/zsh
que foi instalado errado, todos os shells de sistema deve estar em/bin
. No entanto, você não deve mudar/bin/sh
para apontar para algo diferente do padrão (a menos que saiba o que está fazendo) como muitos scripts#!/bin/sh
que normalmente apontam para bash, quando deveriam,#!/bin/bash
porque usam bashisms e outro comportamento que não trabalhar emzsh
oudash
.fonte
bash
ezsh
estão em/bin
Eu tenho o bash como shell padrão para root. Eu usei o zsh por algum tempo, mas depois voltei ao bash . Qual shell você usa, não importa muito.
É apenas um problema, se mais de uma pessoa tiver acesso root. Nesse caso, você pode selecionar um 'denominador comum' que geralmente é o bash, pois esse é o shell mais amplamente usado.
fonte
Em relação ao Solaris / illumos, a Mini-FAQ do Solaris Root Shell menciona
Portanto, sim, se você estiver usando Solaris ou illumos, não há problema em usar outros shells
sh
.fonte