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.


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.


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


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.