Mudar o Shell Padrão no Linux
Visão
Um shell interativo lê comandos de entrada do usuário em um terminal tty. Chamamos o shell interativo após o login bem-sucedido de um usuário de shell padrão ou shell de login.
neste tutorial, vamos discutir como alterar o shell padrão de um usuário.
Introdução ao comando chsh
o comando chsh é fornecido com o pacote util-linux — um pacote padrão disponível em todas as distribuições Linux.
usando o comando chsh com a opção-l, podemos listar os shells instalados no sistema atual:
$ chsh -l/bin/sh/bin/bash/bin/zsh/usr/bin/zsh/usr/bin/git-shell
um uso mais comum do comando chsh é alterar o shell padrão de um usuário.
vamos abordar como fazer isso em seções posteriores.
Qual Shell Estou Usando Atualmente?
após um login bem-sucedido, estaremos com nosso shell padrão.
Antes de falarmos sobre como alterar o shell padrão, vamos primeiro aprender algumas maneiras de descobrir qual shell estamos usando atualmente.
uma maneira é ler o ambiente do sistema $ SHELL, que armazena o comando shell atualmente em execução:
kent$ echo $SHELL/bin/zsh
como o exemplo acima mostra, o shell em execução do meu usuário de login atual é Zsh.
alternativamente, podemos conhecer o shell em execução atual explorando suas informações de processo. O Linux armazena o PID do shell em execução na variável especial$$:
kent$ echo $3492
no exemplo acima, o processo com PID 153492 seria o processo de shell atual. Podemos obter informações detalhadas sobre o processo usando o comando ps com a opção-p:
kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh
a saída nos diz que Zsh é nosso shell atual.
alterando o Shell padrão do usuário atual
se quisermos alterar o shell padrão do usuário de login atual, podemos executar o comando chsh com a opção-s <NEW_SHELL>.
Vamos mudar o shell padrão do usuário atual para Bash:
kent$ chsh -s /bin/bashChanging shell for kent.Password: Shell changed.
vale a pena mencionar que, depois de alterada com êxito o shell padrão, atualmente executando o shell não será alterado. Por exemplo, definimos Bash como o shell padrão do Usuário kent, mas o shell atual ainda é Zsh:
kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh
o shell padrão recém-alterado entrará em vigor na próxima vez que fizermos login com o usuário kent.
o comando shell padrão é essencial para o login dos usuários. Se o comando for inválido, teremos problemas para fazer login com o usuário.Portanto, como estamos alterando o shell padrão, o comando chsh verificará se o comando shell fornecido é válido.
vamos ver o que acontecerá se passarmos um caminho inválido para o comando chsh:
kent$ chsh -s /bin/bashhhhChanging shell for kent.Password: chsh: "/bin/bashhhh" does not exist
aprendemos que o comando chsh pode listar os shells atualmente instalados no sistema.
o comando chsh se recusará a alterar o shell padrão se o shell fornecido não estiver na lista de shells válidos do sistema:
kent$ chsh -s /usr/bin/catChanging shell for kent.Password: chsh: "/usr/bin/cat" is not listed in /etc/shells.Use chsh -l to see list.
no exemplo acima, tentamos definir o comando / usr / bin / cat como o shell padrão do Usuário kent.
o caminho do comando cat é válido. No entanto, não está na lista de shell. Portanto, chsh abortou com a mensagem de erro e a dica correspondentes.
alterando o Shell padrão de outros usuários
até agora, aprendemos como usar o comando chsh para alterar o shell padrão do usuário de login atual.
também podemos alterar o shell padrão de outros usuários usando o comando chsh, mas precisamos da permissão root para fazer isso.
A sintaxe é bastante simples:
root# chsh -s NEW_SHELL USERNAME
Desta vez, nós o login como o usuário root e mudar o shell padrão do usuário kent para /bin/sh:
root# chsh -s /bin/sh kent Changing shell for kent.Shell changed.
Agora, vamos entrar novamente com o usuário kent e verifique se o shell padrão foi alterado com sucesso:
sh-5.1$ echo $SHELL/bin/sh
Como mostra a saída acima, o shell padrão do Usuário kent agora é /bin/sh.
editando o arquivo/etc / passwd
aprendemos a usar o comando chsh para alterar o shell padrão de um usuário. Alternativamente, também podemos fazer isso editando o arquivo/etc / passwd.
no Linux ,o arquivo / etc / passwd é um arquivo de texto simples. Ele armazena informações da conta do usuário, o que é necessário durante o login do Usuário:
-rw-r--r-- 1 root root 2.1K Mar 12 10:27 /etc/passwd
se dermos uma olhada em seus sinalizadores de permissão, veremos que todos os usuários podem lê-lo, mas apenas o usuário root tem permissão para gravar em /etc/passwd.
vamos verificar o conteúdo no arquivo / etc / passwd:
kent$ cat /etc/passwdroot:x:0:0:root:/root:/bin/zshbin:x:1:1:bin:/bin:/bin/false...kent:x:1000:1000::/home/kent:/bin/zshguest:x:1001:1001::/home/guest:/bin/zsh...cups:x:209:209:cups helper user:/:/sbin/nologin...
cada linha no arquivo registra as informações da conta de um usuário. Os campos em um registro são separados por dois pontos.
um registro contém os dados da conta do usuário, como username, UID, GID e home directory, entre outros. O último campo indica o shell padrão do Usuário.
se alterarmos o campo shell padrão no arquivo/etc / passwd, ele entrará em vigor quando o usuário fizer login no sistema na próxima vez.
uma vantagem de editar o arquivo/etc / passwd é que podemos alterar o shell padrão de vários usuários em uma única foto. Às vezes, isso pode ser muito conveniente.
no entanto, devemos ter em mente que quando salvamos o arquivo /etc/passwd, nenhuma validação ou verificação acontecerá nos shells padrão alterados.
portanto, devemos ter certeza de que fornecemos caminhos de comando de shell válidos. Caso contrário, o usuário terá um problema ao fazer login no sistema na próxima vez.
conclusão
neste artigo rápido, aprendemos como alterar o shell padrão de um usuário por meio de exemplos.
o comando chsh é bastante simples para a tarefa. Além disso, ele pode verificar se o shell fornecido é válido no sistema.
se quisermos alterar o shell padrão de um usuário diferente do login atual, precisamos executar o comando chsh com permissão do usuário root.
além disso, se pudermos fazer login como usuário root, também podemos alterar o shell padrão de vários usuários editando diretamente o arquivo /etc/passwd.