Eu tenho um servidor Debian hospedado. Quando faço login via ssh, sou recebido com um ambiente sh. Como faço para alterá-lo para começar em um ambiente de bash?
Eu tenho um servidor Debian hospedado. Quando faço login via ssh, sou recebido com um ambiente sh. Como faço para alterá-lo para começar em um ambiente de bash?
Respostas:
Como usuário comum, você pode alterar seu shell de login padrão usando o chshcomando Aqui está um exemplo:
chsh -s /bin/bash
Outra opção é usar o usermod como root:
usermod -s /bin/bash username
adduser, deve configurá-lo para bash por padrão. O padrão é configurado em /etc/adduser.conf. Caso contrário, especifique o shell explicitamente com useradd.
Você edita /etc/passwdonde a última entrada é o shell padrão. Faça isso /bin/bash.
Como alternativa, você pode alterar o padrão do sistema de /bin/shnão ser bash.
/bin/shser /bin/dash. E pelo que vale as outras duas respostas são idênticas e atingem o mesmo fim por diferentes meios. Tanto faz.
/etc/passwdsão altamente desencorajadas. Um erro de edição pode interromper logins para todos os usuários, exigindo mídia de recuperação ou uma inicialização no modo de usuário único para reparo. Existem ferramentas como usermodpara mudar /etc/passwd.
/etc/passwd.
/bin/bashcomo /bin/shé o mesmo que executá-lo com --posix, que pode ter resultados indesejáveis.
/bin/bashcomo shell todos esses anos em todas as máquinas. Você precisa de um argumento mais concreto.
O shell do sistema padrão /bin/shnas versões recentes do Ubuntu está configurado para ser /bin/dash. Simplesmente executando o seguinte comando:
sudo dpkg-reconfigure dash
você pode alterá-lo de volta ao antigo padrão de /bin/bash.
Com isso, você pode obter o efeito desejado de ter bashcomo shell interativo sem alterar nenhuma configuração do usuário (nenhuma chshou usermod), e funcionará para todos os usuários que atualmente possuem o shell definido /bin/sh.
Há apenas uma pequena desvantagem nisso: o tempo de inicialização do Ubuntu pode aumentar um pouco, porque dashleva menos memória para carregar e um pouco mais rápido para executar (não é de admirar - é tão limitado em recursos). Mas acho que será bastante difícil medir esse efeito, especialmente para o ambiente de hospedagem.
Além disso, às vezes é irritante ver scripts de shell que não funcionam corretamente porque eles usam alguns bashrecursos avançados aos quais não há suporte dash. O uso desta receita garantirá que isso não aconteça.
Para mais informações, consulte o wiki do Ubuntu sobre este problema .
/bin/shé usado como intérprete para scripts de shell compatíveis com POSIX - não é necessariamente o melhor shell interativo; se você quiser bashser o shell do sistema, defina o shell de login preferido usando chshou adduserchamadas apropriadas . using dpkg-reconfigureé uma péssima escolha se userA quer zsh e userB quer bash e ambos insistem em ter / bin / sh como shell padrão.
zsh, e userB para basheles terão. Se UserC configurado para sh, ele vai ter bash, que é atual padrão do Ubuntu para novos usuários de qualquer maneira
dpkg-reconfigure zshdefinir zshcomo / bin / sh e, em seguida dpkg-reconfigure dash, dashcomo / bin / sh, que é uma espécie de impasse; Estou dizendo principalmente que é preferível definir o shell de login para o shell que você deseja usar, em vez de passar por aros para tornar o / bin / sh um bom shell de login.
dpkg-reconfigure dashpode fazer shsentido bash, em vez de aleijado dash. Todas as outras conchas ainda estarão intactas.
No caso em que você esteja tentando usar uma conta compartilhada (por qualquer motivo) e não possa alterar o shell padrão, poderá executar
ssh -t <user@hostname> bash -l
Se você precisar manter seu ambiente afastado de algum outro shell, poderá executá-lo primeiro; por exemplo
ssh -t <user@hostname> ksh -c bash -l
-lopção?