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

1

Estou usando a extensão "oh-my-zsh" de Robby Russell no OSX 10.5 Leopard. No entanto eu acho que não é carregado por padrão .. quando eu iniciar um novo Terminal, ele usa o prompt ZSH "padrão", e devo digitar manualmente "zsh" e pressione Return para obter o prompt "avançado". Meu arquivo .zshrc lista o caminho ZSH como apontando para o diretório oh-my-zsh:

Isso fica muito chato porque toda vez que eu abro uma nova aba eu tenho que digitar zsh novamente (como um aparte é possível obter uma nova aba para lembrar do meu diretório de trabalho atual? Eu escrevo principalmente aplicativos Rails, então eu ' ll ter 2-3 janelas abertas dentro do mesmo diretório e é frustrante ter que cd de volta para ele toda vez). Existe uma maneira fácil de obter automaticamente o início do oh-my-zsh quando eu abro um terminal para que eu não precise digitar zsh toda vez?

EDITAR

Eu instalei o oh-my-zsh automaticamente seguindo as instruções do 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"

Eu tentei alterar o shell padrão para apontar para isso, mas depois recebi um erro dizendo que ele foi definido para uma variável ilegal. A variável $ HOME aponta corretamente para o meu diretório home, mas parece não estar carregando até eu digitar zsh no terminal quando eu tiver o prompt zsh regular.

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 root login -pfq waynemolina /bin/zsh
       \-+= 68846 waynemolina -zsh
         \-+= 68939 waynemolina pstree -wp 68846
           \--- 68940 root ps -axwwo user
    
por Wayne Molina 24.10.2009 / 17:00

4 respostas

2

De volta ao 10.4, Terminal tem uma preferência por “Ao criar uma nova janela do Terminal” para usar /usr/bin/login ou para permitir que o usuário especifique um comando. Espero que o Terminal em 10.5 tenha algo semelhante.

Por acaso você tem algo como zsh -f como o comando especificado, em vez de usar /usr/bin/login ou uma chamada zsh sem -f ? A opção -f fará com que zsh ignore todos os arquivos de inicialização, exceto /etc/zshenv (ou seja, ele ignorará seu ~/.zshrc ).

Outra maneira de verificar essa configuração pode estar 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, você provavelmente ainda está usando o padrão /usr/bin/login .

Editado para adicionar:
Em um de seus shells com o prompt padrão (uma nova janela ou guia Terminal ), verifique o seguinte:

  • O set -o | fgrep rcs mostra "on" por norcs ?
  • O [[ "$ZDOTDIR" -ef "$HOME" ]] || echo "ZDOTDIR=$ZDOTDIR" mostra alguma coisa?

Se uma ou ambas as condições forem verdadeiras, você precisará rastrear onde elas estão sendo definidas. Observe que norcs pode ser definido com 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 ). Procure em /etc/zshenv , /etc/zprofile , /etc/zshrc , /etc/zlogin ; e .zshenv , .zprofile , .zshrc e .zlogin do seu diretório ZDOTDIR.

Também pode ser útil conhecer o parentesco completo de seus shells de "prompt padrão" ( pstree -wp $$ se você tiver pstree de (por exemplo) MacPorts ). Talvez o processo normal de "rc" esteja sendo interrompido por algo como zsh -f em um arquivo "rc".

    
por 28.10.2009 / 07:22
2

Eu não sei muito sobre como o Mac OS X funciona com shells, mas em geral acho útil polvilhar algumas declarações echo em torno dos meus arquivos de inicialização, para ter certeza de que eles estão sendo originados. Então, no seu arquivo .zshrc, você poderia colocar uma linha que diz echo "Loading .zshrc" . E assim por diante. A presença ou ausência dessas instruções echo quando você inicia um novo shell (ou abre uma nova guia) deve ajudá-lo a diagnosticar o problema.

Quanto ao problema de alteração de diretório, existem duas soluções possíveis:
1. Use a tela e esqueça as guias.
2. Escreva uma função para fazer eco do diretório atual para um arquivo em algum lugar, depois coloque essa função no seu precmd e, em seguida, adicione uma linha no arquivo .zshrc para ler esse arquivo e cd para ele. 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"'"
    
por 30.10.2009 / 20:52
1

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

    
por 29.06.2011 / 05:24
0

Tente colocar isso no arquivo ~/.zshrc para fins de depuração:

Logo após esta linha:

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

Coloque:

echo $HOME
echo $ZSH
    
por 01.11.2009 / 12:49

Tags