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 chsh
comando 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/passwd
onde a última entrada é o shell padrão. Faça isso /bin/bash
.
Como alternativa, você pode alterar o padrão do sistema de /bin/sh
não ser bash.
/bin/sh
ser /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/passwd
sã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 usermod
para mudar /etc/passwd
.
/etc/passwd
.
/bin/bash
como /bin/sh
é o mesmo que executá-lo com --posix
, que pode ter resultados indesejáveis.
/bin/bash
como shell todos esses anos em todas as máquinas. Você precisa de um argumento mais concreto.
O shell do sistema padrão /bin/sh
nas 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 bash
como shell interativo sem alterar nenhuma configuração do usuário (nenhuma chsh
ou 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 dash
leva 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 bash
recursos 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 bash
ser o shell do sistema, defina o shell de login preferido usando chsh
ou adduser
chamadas 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 bash
eles 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 zsh
definir zsh
como / bin / sh e, em seguida dpkg-reconfigure dash
, dash
como / 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 dash
pode fazer sh
sentido 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
-l
opção?