Usando extensões zsh - por que preciso digitar manualmente “zsh” para que apareça?

1

Estou usando a extensão "oh-my-zsh" de Robby Russell no OSX 10.5 Leopard. No entanto, acho que ele não é carregado por padrão. Quando inicio um novo Terminal, ele usa o prompt ZSH "padrão" e devo digitar manualmente "zsh" e pressionar Retornar para obter o prompt "aprimorado". Meu .zshrcarquivo lista o caminho ZSH como apontando para o diretório oh-my-zsh:

Isso fica muito irritante porque toda vez que abro uma nova guia, tenho que digitar zsh novamente (como um aparte é possível obter uma nova guia para lembrar meu diretório de trabalho atual? Eu escrevo principalmente aplicativos Rails, então eu -3 janelas abrem dentro do mesmo diretório e é frustrante ter que voltar a usá-lo todas as vezes). Existe uma maneira fácil de fazê-lo iniciar automaticamente o oh-my-zsh quando abro um terminal para não precisar digitar zsh toda vez?

EDITAR

Instalei automaticamente o oh-my-zsh seguindo as instruções de Robby no Github, então aqui está o .zshrc que ele criou para mim:

# Path to your oh-my-zsh configuration.
export ZSH=$HOME/.oh-my-zsh

# Set to the name theme to load.
# Look in ~/.oh-my-zsh/themes/
export ZSH_THEME="maran"

# Comment this out to disable weekly auto-update checks
# export DISABLE_AUTO_UPDATE="false"

source $ZSH/oh-my-zsh.sh

# Customize to your needs...
export     PATH=/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr  /local/bin:/usr/X11/bin:/usr/local/git/bin
export GIT_EDITOR="mate -w"

Tentei alterar o shell padrão para apontar para isso, mas recebo um erro dizendo que foi definido como uma variável ilegal. A variável $ HOME aponta corretamente para o meu diretório pessoal, mas parece não estar carregando até eu digitar zsh no terminal quando tenho o prompt zsh normal.

EDITAR

Aqui está a saída de pstree -wp $$

- + = 00001 root / sbin / launchd
 \ - + = 00066 waynemolina / sbin / launchd
   \ - + = 68844 waynemolina /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_704684
     \ - + = 68845 login raiz -pfq waynemolina / bin / zsh
       \ - + = 68846 waynemolina -zsh
         \ - + = 68939 waynemolina pstree -wp 68846
           \ --- 68940 root ps -axwwo usuário
Wayne Molina
fonte

Respostas:

2

De volta à 10.4, o Terminal prefere "Ao criar uma nova janela do Terminal" para usar /usr/bin/loginou permitir que o usuário especifique um comando. Espero que o Terminal 10.5 tenha algo parecido.

Você tem algo como zsh -fo comando especificado em vez de usar /usr/bin/loginou uma chamada zsh sem -f? A -fopção fará com que o zsh ignore todos os arquivos de inicialização, exceto /etc/zshenv(isto é, ignorará o seu ~/.zshrc).

Outra maneira de verificar essa configuração pode ser com defaults read com.apple.Terminal Shell. Se mostrar alguma saída, você tem uma configuração personalizada. Se estiver em branco ou não existir, provavelmente você ainda está usando o padrão de /usr/bin/login.

Editado para adicionar:
Em uma de suas conchas com o prompt padrão (uma nova janela ou guia do Terminal ), verifique o seguinte:

  • Não set -o | fgrep rcsmostrar “on” para norcs?
  • Será que [[ "$ZDOTDIR" -ef "$HOME" ]] || echo "ZDOTDIR=$ZDOTDIR"mostrar alguma coisa?

Se uma ou ambas as condições forem verdadeiras, será necessário rastrear onde elas estão sendo definidas. Note-se que norcspode ser definido com qualquer um set +o rcs, set -o norcs, setopt norcs, unsetopt rcs, ou set -f. Além disso, os nomes das opções não diferenciam maiúsculas de minúsculas e podem ter sublinhados inseridos em qualquer lugar ( NO_rC___sé o mesmo que norcs). Olhe em /etc/zshenv, /etc/zprofile, /etc/zshrc, /etc/zlogin; e .zshenv, .zprofile, .zshrc, e .zlogindo seu diretório ZDOTDIR.

Também pode ser útil conhecer a paternidade completa de seus shells “prompt padrão” ( pstree -wp $$se você possui pstree(por exemplo) MacPorts ). Talvez o processo normal 'rc' esteja sendo interrompido por algo como zsh -fem um arquivo 'rc'.

Chris Johnsen
fonte
Ele estava usando / usr / bin / login de acordo com as configurações, mas eu mudei para / bin / zsh e ele ainda está executando o prompt zsh "padrão" e não o aprimorado.
30119 Wayne Molina
Eu tentei os dois comandos que você postou, o rcs está "desativado" e o ZDOTDIR está vazio.
31119 Wayne Molina
Você quer dizer que você vê norcs off(qual é o padrão e significa que seus arquivos 'rc' devem ser usados)? Os ecos de depuração inseridos com base na resposta de Ryan também parecem indicar que norcsestá desativado para o seu caso "Nova guia" / "Nova janela". Eu só queria esclarecer, já que 'rcs está "desativado"' é na verdade o oposto de 'norcs está "desativado"'.
31410 Chris Johnsen
2

Não sei muito sobre como o Mac OS X funciona com shells, mas, em geral, acho útil espalhar algumas instruções de eco nos meus arquivos de inicialização, para garantir que eles estejam sendo originados. Portanto, no seu arquivo .zshrc, você pode colocar uma linha que diz echo "Loading .zshrc". E assim por diante. A presença ou ausência dessas instruções de eco ao iniciar um novo shell (ou abrir uma nova guia) deve ajudar a diagnosticar o problema.

Quanto ao problema de mudança de diretório, existem duas soluções possíveis:
1. Use screen, e esqueça as guias.
2. Escreva uma função para ecoar o diretório atual em um arquivo em algum lugar, coloque essa função no seu precmd e adicione uma linha em .zshrc para ler o arquivo e o CD nele. Para ser mais específico (mas não testado!):

PWD_SAVE_FILE="$HOME/.pwd_save"
function savepwd {
  pwd > "$PWD_SAVE_FILE"
}

function precmd {
  savepwd
}

cd "`cat "$PWD_SAVE_FILE"`"
Ryan Thompson
fonte
+1 para a técnica 'echo debug'; apenas remova-os (ou comente-os) quando terminar, caso contrário, a saída de eco dos arquivos 'rc' sem login (.zshenv, .zshrc e equivalentes globais) pode confundir ferramentas que ssh-in e executam comandos diretamente (por exemplo, rsync, git)
Chris Johnsen
Eu fiz um eco e ele foi emitido corretamente quando carreguei um novo prompt de comando. É também executar quando digito os "zsh" comando, por isso está ficando carregado, mas por algum motivo o prompt reforçada não está aparecendo até que eu digite zsh manualmente
Wayne Molina
Bem, na verdade, eu não tenho um Mac, então não posso ajudá-lo com a estranheza específica do Mac. Apenas esquisitice geral e possivelmente esquisitice específica do zsh.
21419 Ryan Thompson
1

Eu tive esse problema. Era devido a ter um .zlogin no meu diretório pessoal. Uma vez que eu removi .zlogin oh meu zsh funcionou

Anark
fonte
0

Tente colocar isso em seu ~/.zshrcarquivo para fins de depuração:

Logo após esta linha:

export ZSH=$HOME/.oh-my-zsh

Colocar:

echo $HOME
echo $ZSH
Dennis Williamson
fonte