Alterando o shell padrão no Linux [fechado]

318

Como é possível alterar o shell padrão? O envcomando atualmente diz:

SHELL=/bin/tcsh

e eu quero mudar isso para Bash.

mahmood
fonte
4
Essa é uma boa pergunta, mas pode ser mais apropriada para o site de controle de qualidade do Linux.
BradleyDotNET
6
configure-o em / etc / passwd
resultsway

Respostas:

415

Tente o comando linux chsh.

O comando detalhada chsh -s /bin/bash. Ele solicitará que você digite sua senha. Seu shell de login padrão é /bin/bashagora. Você deve sair e fazer login novamente para ver esta alteração.

O seguinte é citado na página do manual:

O comando chsh altera o shell de login do usuário. Isso determina o nome do comando de login inicial do usuário. Um usuário normal pode alterar apenas o shell de login para sua própria conta, o superusuário pode alterar o shell de login para qualquer conta

Este comando alterará permanentemente o shell de login padrão.

Nota: Se sua conta de usuário for remota, como na autenticação Kerberos (por exemplo, Enterprise RHEL), você não poderá usá-lo chsh.

Summer_More_More_Tea
fonte
10
chsh: can only change local entries; use ypchsh instead. Então o ypchsh não tem -sopção #
mahmood
10
@ ShaktiMalik Acredito que o arquivo de configuração seja /etc/passwd, mas não o verifiquei duas vezes.
11132 Summer_More_More_Tea
30
Você deve sair e fazer login novamente para ver esta alteração.
Neil Traft
22
No meu caso, eu tinha acesso root, mas não queria mexer com nenhuma configuração no host real. Eu adicionei exec /bin/basha ~/.profilee isso me permitiu entrar directamente para o bash sem fazer quaisquer alterações para o servidor. (O shell padrão original era apenas /bin/sh)
Paul Nelson Baker
2
@BCqrstoO Obrigado por isso. Mas e se você digitar exitbash? Você efetuará logout do servidor diretamente ou simplesmente sairá do bash para o sh e outro exitnecessário para efetuar logout do servidor?
Summer_More_More_Tea
148

Você pode alterar o arquivo passwd diretamente para o usuário específico ou usar o comando abaixo

chsh -s /usr/local/bin/bash username

Depois saia e entre

Gelo do deserto
fonte
8
Provavelmente, é uma boa ideia tentar which bashantes de chamar o comando acima; sua milhagem pode variar de acordo com a localização. No meu caso, foi encontrado em/bin/bash
Martin Haeberli
Também posso acrescentar que, chshcommand faz parte do util-linuxpacote; e chsh -s $(which bash) $USERdeve resultar o mesmo que acima.
Há também a -lopção: "imprimir lista de conchas".
Betlista 04/07/19
3
era chsh -s /bin/bash usernamepara mim #
2984 Salvatorelab
Obrigado! Isso me ajudou ao tentar alterá-lo para outro usuário #
Tobias Feil
18

Você deve ter um 'esqueleto' em algum lugar /etc, provavelmente /etc/skeleton, ou verificar as configurações padrão, provavelmente /etc/defaultou algo assim. Esses são scripts que definem variáveis ​​de ambiente padrão sendo definidas durante um login.

Se for apenas para sua própria conta: verifique o arquivo (oculto) ~/.profilee ~/.login. Ou gere-os, se eles não existirem. Eles também são avaliados pelo processo de login.

Arkascha
fonte
5
Mais 1 por responder especificamente à pergunta (O Shell Padrão). No Red Hat Linux, ele é especificado em/etc/default/useradd
geedoubleya 26/09/14
@geedoubleya Você pode especificar qual é a diferença no shell padrão e de login?
Betlista 04/07/19
1
Oi @Betlista O shell padrão é o shell usado para um novo login de usuário quando eles são criados, a menos que um shell específico seja fornecido como argumento.
precisa saber é o seguinte