Como definir meu shell padrão no Mac?

190

Não gosto de redigitar peixes sempre que inicio o terminal. Eu quero fishpor padrão. Como definir o shell de peixe como meu shell padrão em um Mac?

Léo Léopold Hertz 준영
fonte

Respostas:

31

Eles são aplicáveis ​​ao MacOS Sierra 10.12.5 (16F73) e provavelmente a outras versões recentes e futuras do MacOS.

  1. chshnão é suficiente para alterar o shell padrão. Pressione Command+ ,enquanto o terminal estiver aberto e altere a opção 'Shells open with' para 'Default login shell'.

  2. No caso de bash, certifique-se de executar echo $BASH_VERSIONpara confirmar que está executando a versão pretendida do bash. bash --versionnão fornece informações corretas.

Tushar Vazirani
fonte
3
Como esta resposta é a aceita, talvez em vez de ser um adendo presumivelmente para outra resposta , você pode torná-la uma resposta completa para incluir o adendo.
Jason R. Coombs
Isso é respondido nos documentos agora.
precisa saber é o seguinte
@ JasonR.Coombs Feito.
Tushar Vazirani
1
Update: Podemos agora definir shell padrão no Preferencesde Terminal.app . Veja esta resposta por Pankaj.
Basil Bourque
Mencionei o atalho do teclado para obter preferências.
Tushar Vazirani
241

1. sudo nano / etc / shells insira a descrição da imagem aqui

2. adicione / usr / local / bin / fish à sua lista de conchas insira a descrição da imagem aqui

3. chsh -s / usr / local / bin / fish

user391339
fonte
2
E você deve alterar as Shell open with: Default login shellconfigurações do Terminal.app
Tikhonov Alexander
77

Você pode usar o chsh para alterar o shell de um usuário.

Execute o código a seguir, por exemplo, para alterar seu shell para Zsh

chsh -s /bin/zsh

Conforme descrito na página de manual, e por Lorin, se o shell não é conhecido pelo sistema operacional, você tem que adicioná-lo à sua lista conhecido: /etc/shells.

Aif
fonte
13
Tentei e consegui chsh: /usr/local/bin/fish: non-standard shell solução foi a adicioná-lo ao arquivo / etc / shells como descrito por @ resposta lorin-Hochstein abaixo
lmsurprenant
dbright @ PowerMac: ~ $ chsh -s / Usuários / dbright / sys / bin / bash Alterando o shell do dbright. Senha para dbright: chsh: / Users / dbright / sys / bin / bash: shell não padrão dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 roda raiz 179 23 de setembro de 2007 / etc / shells
don bright
Hum, eu tentei recentemente o chsh, que funcionava como um usuário simples (sem o -sembora). Vou tentar novamente em breve.
Aif
73

Do terminal:

  1. Adicione Fish a /etc/shells, o que exigirá uma senha administrativa:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Faça do Fish seu shell padrão com chsh:

    chsh -s /usr/local/bin/fish
    

Nas Preferências do Sistema:

  1. Usuário e Grupos → clique com o botão direito do mouse em Usuário Atual → Opções Avançadas ...

  2. Alterar shell de logon para /usr/local/bin/fish

    shell de login

  3. Pressione OK, efetue logout e logon novamente

Paolo Moretti
fonte
8
Teve que fazer um ligeiro ajuste para o passo 1. -sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
purpletonic
Apenas uma outra maneira de fazer a mesma coisa @purpletonic mencionadoecho /usr/local/bin/fish | sudo tee -a /etc/shells
mroach
20

Aqui está outra maneira de fazer isso:

Supondo que você o tenha instalado com o MacPorts, o que pode ser feito com:

sudo port install fish

Seu shell estará localizado em /opt/local/bin/fish.

Você precisa informar ao OSX que este é um shell válido. Para fazer isso, adicione esse caminho ao final do /etc/shellsarquivo.

Depois de fazer isso, você pode alterar o shell acessando Preferências do Sistema -> Contas. Clique no bloqueio para permitir alterações. Clique com o botão direito na conta e escolha "Opções avançadas ...". No campo "Shell de login", adicione o caminho para pescar.

Lorin Hochstein
fonte
obrigado! isso funcionou muito bem e fez do peixe o meu terminal padrão em todos os lugares. apenas trocá-lo no terminal como uma das outras respostas feitas pelo terminal sempre que eu fechava uma janela e o chsh simplesmente não funcionava para mim.
Jasongregori 06/06
12

A única coisa que funcionou para mim foi uma combinação de todos esses métodos.

  1. Primeiro eu tive que adicionar peixe ao /etc/shellsarquivo

  2. Então eu corri chsh -s /usr/local/bin/fish

  3. Finalmente, digitei Command+ ,e adicionei /usr/local/bin/fisho caminho padrão lá

Somente depois que eu fiz as três coisas, os peixes começaram a aparecer como padrão para as novas janelas do terminal.

singularidade
fonte
9

Mac OS X: Como alterar o shell do Terminal

quiabo
fonte
2
Eu aconselho a preferir essa abordagem e não alterar seu shell OSX padrão. Eu tive "instalações infinitas" no iWorks - por exemplo - por causa de scripts de instalação que assumem que você possui um shell compatível com SH (não é o caso do ZSH no meu caso).
do Cyber Oliveira
8

Terminal.app > Preferences> General> Shells open with:>/bin/fish

  1. Abra seu terminal e pressione command+ ,(vírgula). Isso abrirá uma janela de preferências.
  2. A primeira guia é 'Geral'.
  3. Encontre a configuração 'Shells open with' e escolha a segunda opção, que precisa do caminho completo para o shell.
  4. Cole o link no seu comando fish, o que geralmente é /usr/local/bin/fish.

Veja esta captura de tela onde zshestá sendo definido como padrão.

captura de tela da inserção de <code> / bin / zsh </code> nas preferências do Terminal.app

Estou usando o macOS Sierra . Também funciona no macOS Mojave .

Pankaj
fonte
2
Finalmente! Uma solução que funciona para um usuário não sudo!
É Isaac
7

No macOS Mojave, eu tinha que fazer o seguinte (usando o zsh como exemplo):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
MagicDude4Eva
fonte
Nota: Você pode usar esse método exato para obter também a versão mais recente do bash. stackoverflow.com/a/55011144/117471 Eu criei quase o mesmo código por conta própria.
de Bruno Bronosky
1
Não há necessidade de instalar zsh. Já está presente no macOS Mojave. Empacotado no Mojave e padrão na Catalina.
Basil Bourque
5

Como obter a versão mais recente do bash no macOS moderno (testado no Mojave).

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

Então você está pronto para obter a conclusão da guia de estilo vim, que está disponível apenas no bash> = 4 (a versão atual brewé 5.0.2

# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete

# Display a list of the matching files
bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"
Bruno Bronosky
fonte
4

o chshprograma permitirá que você altere seu shell padrão. Ele desejará o caminho completo para o executável; portanto, se o seu shell estiver fish, você precisará fornecer a saída fornecida ao digitar which fish.

Você verá uma linha começando com " Shell:". Se você nunca a editou, provavelmente diz " Shell: /bin/bash". Substitua esse /bin/bashcaminho pelo caminho para o shell desejado.

rejeitar
fonte
4

Quando estiver no terminal, abra as preferências do terminal usando Command+ ,.

Na guia Configuração, selecione um dos temas e escolha a guia shell à direita.

Você pode definir o comando de inicialização automática fish.

holsety
fonte
4

Este trabalho para mim na nova instalação do mac osx (sierra):

  1. Definir usuário atual como proprietário de shells
sudo chown $(whoami) /etc/shells
  1. Adicione Fish a / etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Faça do Fish seu shell padrão com chsh
chsh -s /usr/local/bin/fish
  1. Redefinir raiz como proprietário de conchas
sudo chown root /etc/shells
ZecKa
fonte
2
heimdall:~ leeg$ dscl
Entering interactive mode... (type "help" for commands)
 > cd /Local/Default/Users/
/Local/Default/Users > read <<YOUR_USER>>
[...]
UserShell: /bin/bash
/Local/Default/Users >

apenas mude esse valor (com o comando write dscl).

Ordiel
fonte
Eu recebo este erro quando eu corro leeg leitura: <dscl_cmd> DS Erro: -14136 (eDSRecordNotFound)
Léo Léopold Hertz 준영
1
Sim. Isso porque leeg é meu nome de usuário, não seu: P
0

Caso você esteja tendo problemas com as outras formas, trabalhou no mac Mojave, mas geralmente deve funcionar.

which fish

adicione o caminho de saída a "Preferências do Sistema> Usuários e Grupos> clique com o botão direito do mouse em Opções Avançadas". Cole o resultado a partir do qual em "Shell de login:"

SLuck
fonte
0

Para alterar seu shell padrão no mac, execute o seguinte:

chsh -s <name-of-shell>

Lista de conchas que você pode escolher são:

  1. / bin / bash
  2. / bin / csh
  3. / bin / dash
  4. / bin / ksh
  5. / bin / sh
  6. / bin / tcsh
  7. / bin / zsh

portanto, se você deseja alterar para o shell / bin / zsh, seu comando será semelhante a:

chsh -s /bin/zsh

você pode ver todos os shells disponíveis no seu sistema executando:

cat /etc/shells
Chavez Harris
fonte