O Terminal executa um comando aparentemente arbitrário ao abrir uma nova guia no Mac OS X 10.10

0

Estou no Mac OS X 10.10. De repente, meu "Terminal" começou a executar um comando sempre que eu abro uma nova guia. Isso é frustrante porque estou acostumado a digitar imediatamente ao abrir uma guia e ter o comando executado enquanto digito.

Por exemplo, antes desse problema, eu poderia pressionar cmd + T e digitar imediatamente bin/rails c e quando a guia estivesse pronta, bin/rails c estaria no linha de comando e eu poderia simplesmente pressionar enter . Agora, isso é o que acontece:

bin/lserman-5:test lserman$ bin/cd /workspace/test/app/helpers
-bash: bin/cd: No such file or directory
lserman-5:test lserman$ rails c

O comando que é executado é cd /workspace/test/app/helpers , que é executado quando estou no meio da digitação de bin/rails c . cd também é um problema, pois o terminal alterna para um diretório diferente quando estou acostumado a abrir a guia no mesmo local em que a guia anterior estava. Por exemplo, é isso que eu recebo quando clico em cmd + T sem digitar nada imediatamente:

lserman-5:test lserman$ cd /workspace/test/app/helpers
lserman-5:helpers lserman$ 

O comando atual parece mudar a cada dois dias. Eu não tenho ideia do que causa isso. Se bem me lembro, parece que é sempre alguma forma de cd . Eu olhei em .profile , .bash_profile e .bashrc e não vejo nada fora do comum. O que mais pode causar isso?

O conteúdo de /etc/profile :

# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
    eval '/usr/libexec/path_helper -s'
fi

if [ "${BASH-no}" != "no" ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
fi

O conteúdo de /etc/bashrc :

# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
   return
fi

PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
# Tell the terminal about the working directory at each prompt.
if [ "$TERM_PROGRAM" == "Apple_Terminal" ] && [ -z "$INSIDE_EMACS" ]; then
    update_terminal_cwd() {
        # Identify the directory using a "file:" scheme URL,
        # including the host name to disambiguate local vs.
        # remote connections. Percent-escape spaces.
    local SEARCH=' '
    local REPLACE='%20'
    local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
    printf '\e]7;%s\a' "$PWD_URL"
    }
    PROMPT_COMMAND="update_terminal_cwd; $PROMPT_COMMAND"
fi
    
por Logan Serman 25.03.2015 / 16:19

2 respostas

0

Isso é frustrante, mas não deve ser muito difícil de depurar. A verificação de /etc/profile e /etc/bash.rc é um pouco profunda demais e excessiva. Os primeiros lugares que eu verificaria estão nos arquivos de ambiente do shell específicos do usuário que são carregados sempre que uma nova janela é aberta: ~/.bash_profile , ~/.bash_login e ~/.profile .

Meu palpite é que algum lixo de comando foi anexado ao final de pelo menos um desses arquivos. E tudo o que esses arquivos fazem é definir seu ambiente de shell Bash local, que é o que você vê quando abre pela primeira vez uma janela “Terminal” ou abre uma nova guia em “Terminal”.

Procure em cada arquivo assim; Estou usando nano neste exemplo, mas fique à vontade para usar o editor de texto simples que você preferir

nano  ~/.bash_profile

nano  ~/.bash_login

nano  ~/.profile

Apenas procure o comando errante cd /workspace/test/app/helpers em qualquer / todos eles e exclua o comando.

Além disso, se você está nervoso com a exclusão de qualquer coisa nesses arquivos, apenas comente as linhas com # e veja o que acontece. Contanto que o comando seja comentado, ele não será executado. E se não for executado, não haverá mais erros.

    
por 26.03.2015 / 01:26
0

Acabei de fechar o Terminal completamente e comecei com uma nova janela e está consertada. Somente novas guias nessa janela antiga foram quebradas. Não sei o que era, mas ... se foi agora.

    
por 26.03.2015 / 22:13