Fiquei surpreso por não ter encontrado essa pergunta no site. Então, hoje $
veio depois de fazer login como um novo usuário. Isso foi inesperado porque o prompt do meu usuário principal começa com username@computername:~$
.
Então, como faço para mudar disso outro shell para bash?
Comentários
Resposta
Presumindo que o shell desconhecido suporta a execução de um comando absoluto, você pode tentar: /bin/bash
Para alterar o shell padrão, eu usaria chsh(1)
. Exemplo de uso: chsh -s /bin/bash $USER
Comentários
- O chsh muda permanentemente o shell ou apenas para a sessão atual ?
- @mouche permanentemente; ele muda sua entrada em
/etc/passwd
- @mouche,
chsh(1)
só permitirá mudar para um shell que está listado em/etc/shells
(e está disponível, provavelmente).chsh -l
lista as alternativas. Tenha cuidado, alguns (comonologin
) são definidos para contas que nunca devem ser usadas para fazer login (uma ótima maneira de se bloquear), pode haver acréscimos locais para usos especiais.
Resposta
Você digita bash
. Se você deseja que seja uma mudança permanente do shell padrão para /bin/bash
editando /etc/passwd
.
Aqui “s alguns trechos de meu /etc/passwd
:
avahi:x:84:84:Avahi daemon:/:/bin/false xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh postgres:x:88:88::/var/lib/postgres:/bin/zsh bob:x:1001:1001::/home/bob:/bin/bash usbmux:x:140:140:usbmux user:/:/sbin/nologin
O último campo contém o shell, modificando o campo após o último :
para um shell válido ou inválido funcionará. /bin/false
e /sbin/nologin
significam o usuário não tem um shell de login real, embora se o pam não estiver configurado corretamente, isso não significa que eles não possam fazer o login (eu relatei um bug sobre isso no Arch Linux, porque você pode fazer o login graficamente sem ter um shell de login). /bin/bash
e /bin/zsh
são shells válidos, consulte /etc/shells
para obter uma lista de shells válidos em seus sistemas. Aqui está meu /etc/shells
se você estiver interessado.
/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash
Sim, você pode usar chsh
ou usermod
para fazer as mesmas coisas, lembre-se de que são apenas arquivos de texto estruturados e TIMTOWTDI.
Comentários
- Você provavelmente deseja usar
chsh
em vez de editar manualmentepasswd
- @Michael, existem cerca de 5 (POOMA) maneiras diferentes de alterar o shell em
/etc/passwd
Eu não ' não queria listar nenhum deles , porque sempre faço manualmente. chsh e usermod podem fazer isso. - Mexer com arquivos de configuração é uma má ideia (TM), um erro pode tornar o sistema inutilizável. Sim, geralmente é o único / caminho mais rápido, mas faça-o com extremo cuidado .
Resposta
Se chsh ou editar manualmente a configuração não funcionar, mas um script ~ / .profile é executado no login, adicione esta linha:
exec /bin/bash --login
Comentários
- Depois de dar uma olhada por um tempo, esta era a solução de que eu precisava. Obrigado!
- Ótima ideia, especialmente se o shell selecionou as fontes daquele arquivo na inicialização …
-
touch ~/.bash_profile
ou o bash executará a si mesmo em um loop: o bash leva~/.profile
no caso de~/.bash_profile
não ' não existe.
$
apareceu em vez deusername@computername:~$
não ' t significa que não foi ' t bash. A formatação exata do prompt é definida pela variável PS1, que pode ser configurada ou personalizada de maneira diferente para diferentes usuários.echo $SHELL
para descobrir qual é o seu shell atual./bin/sh
muitas vezes não ' significa muito que ' s geralmente um link simbólico para outra coisa. Eu ' d digitels -l /bin/sh
para ver o que ' é um link simbólico. Em alguns casos, ser um link simbólico para algo muda seu comportamento, eu não ' acho que o bash é assim.bash
como/bin/sh
desativa muitos recursos do bash (entra no modo de conformidade POSIX).