Como faço para mudar de um shell desconhecido para o bash?

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

  • Só porque $ apareceu em vez de username@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.
  • @mouche Re: @frabjous echo $SHELL para descobrir qual é o seu shell atual.
  • @mouche @frabjous e começando com $ é realmente comum para bash, alguns shells não bash como zsh usam o% fora da caixa, acredito que outros shells usam outras coisas.
  • @mouche sendo /bin/sh muitas vezes não ' significa muito que ' s geralmente um link simbólico para outra coisa. Eu ' d digite ls -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.
  • @xenoterracide – Usando bash como /bin/sh desativa muitos recursos do bash (entra no modo de conformidade POSIX).

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 (como nologin) 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 manualmente passwd
  • @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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *