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 -llista 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
chshem vez de editar manualmentepasswd - @Michael, existem cerca de 5 (POOMA) maneiras diferentes de alterar o shell em
/etc/passwdEu 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_profileou o bash executará a si mesmo em um loop: o bash leva~/.profileno caso de~/.bash_profilenã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 $SHELLpara descobrir qual é o seu shell atual./bin/shmuitas vezes não ' significa muito que ' s geralmente um link simbólico para outra coisa. Eu ' d digitels -l /bin/shpara 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.bashcomo/bin/shdesativa muitos recursos do bash (entra no modo de conformidade POSIX).