Eu uso o Mac Terminal com uma mão cheia de guias, cada uma atribuída a um diretório de trabalho diferente. Eu o configurei para abrir novas janelas com o mesmo diretório de trabalho. No entanto, ao sair do Terminal e reiniciá-lo, ele recria todas as guias e seus nomes, até me mostra a última saída na janela, mas permanece no diretório inicial do usuário e não restaura o diretório de trabalho mais recente de cada guia.
O que estou fazendo de errado? Isso pode ser causado por alguma configuração no ~/.bash_profile
?
Respostas:
(Para referência, estamos falando sobre o recurso Continuar do Mac OS X Lion 10.7 e posterior.)
O Terminal restaura automaticamente o diretório de trabalho se você estiver usando o shell padrão, bash. Se você estiver usando outro shell, será necessário adaptar o código
/etc/bashrc
para enviar uma sequência de escape para comunicar o diretório de trabalho ao Terminal, para que ele possa restaurar o diretório posteriormente para Reiniciar. Se você estiver usando o zsh, consulte minha resposta para Reiniciar o Terminal Zsh (OS X Lion) , no qual incluo o código apropriado para o zsh.Se você tem um costume
~/.bash_profile
ou~/.bashrc
pode precisar garantir que não está desfazendo o comportamento padrão, modificando/etc/bashrc
as personalizações. Em particular, ele define aPROMPT_COMMAND
variável de ambiente para enviar a sequência de escape a cada prompt. Se você personalizar essa variável, precisará prefixar ou acrescentar seu código ao valor atual, por exemplo:Além disso, em geral,
~/.bash_profile
deve ser executado~/.bashrc
:fonte
.bashrc
(embora não conseguisse identificar nenhuma customização imediata do comando. Agora, faço o seguinte: 1. Abra uma nova janela do Terminal (abre no diretório pessoal do meu usuário) 2. Documentos em CD 3. Saia do Terminal 4. Abra o Terminal 5 . Janela reabre exibir a saída mudança diretório, mas ainda está localizado no diretório home do usuário.~/.bash_profile
,~/.bash_login
e~/.profile
.~/.bashrc
conforme sua sugestão na sua resposta./etc/bashrc
parece ter sido ajustado por um script de instalação ou o que quer. Havia um/etc/bashrc.orig
que continha alguma configuração adicional (que eu assumo ser a configuração original) gist.github.com/3273170 . Re-adicionando isso às/etc/bashrc
coisas feitas funcionando como esperado novamente. Muito obrigado pela ajuda e paciência!Se você estiver usando o Bash-It, poderá ter o problema de
$PROMPT_COMMAND
ser substituído por ele.Como mencionado, ele é usado pelo OS X para restaurar o cwd em novas guias. Bash deve anexar valores, não substituí-los.
Mas uma solução alternativa por enquanto seria adicionar a seguinte linha ao seu
~/.bash_profile
Para obter mais informações, consulte o rastreador de problemas para atualizações: https://github.com/revans/bash-it/issues/240
E a referência da Apple para ele https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/man1/sh.1.html
fonte
Eu escrevi uma postagem no blog sobre como fazer isso para o csh / tcsh antes de descobrir esta resposta; se alguém vier aqui procurando uma solução para essas conchas, aqui está:
Adicione isso ao seu
.cshrc
ou.tcshrc
conforme apropriado. (A instrução if externa é necessária para evitar um erro ao efetuar logon remotamente, como no ssh. Ela deve ser uma instrução separada devido às regras de expansão variável no tcsh.)Como o suporte básico da Apple, esta solução não usa programas externos além
printf
do custo de apenas espaços vazios. Se você precisar escapar de outros caracteres especiais, precisará trabalhar um pouco mais para encontrar uma solução mais abrangente.fonte