Я на Mac OS X 10.10. Внезапно мой «Терминал» запускал команду всякий раз, когда я открывал новую вкладку. Это расстраивает, потому что я привык печатать сразу при открытии вкладки и выполнять команду так, как я ее набрал.

Например, до этой проблемы я мог нажать cmd+T, а затем сразу набрать bin/rails c и когда вкладка была готова, bin/rails c появилось в командной строке, и я мог просто нажать enter. Теперь вот что происходит:

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

Запущенная команда:cd /workspace/test/app/helpers , которая выполняется, когда я набираю bin/rails c . cd также является проблемой, потому что терминал переключается на другой каталог, когда я привык открывать вкладку в том же месте, где была предыдущая вкладка. Например, вот что я получаю, когда просто нажимаю cmd+T, не набирая ничего сразу:

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

Фактическая команда, кажется, меняется каждые пару дней. Я понятия не имею, что вызывает это. Если я правильно помню, кажется, что это всегда какая-то форма cd . Я посмотрел в .profile , .bash_profile и .bashrc и я не вижу ничего необычного. Что еще может привести к этому?

Содержимое /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

Содержимое /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

2 ответа2

0

Я просто полностью закрыл терминал и начал с новым окном, и оно исправлено. Только новые вкладки в этом старом окне были сломаны. Не уверен, что это было, но ... это ушло сейчас.

0

Это разочаровывает, но не должно быть слишком сложным для отладки. Проверка /etc/profile и /etc/bash.rc слишком глубока и чрезмерна. Первые места, которые я бы проверил, - это пользовательские файлы среды оболочки, которые загружаются при каждом открытии нового окна: ~/.bash_profile , ~/.bash_login и ~/.profile .

Я предполагаю, что какой-то командный мусор был добавлен в конец хотя бы одного из этих файлов. И все эти файлы определяют вашу локальную среду оболочки Bash, которую вы видите, когда вы впервые открываете окно «Терминал» или открываете новую вкладку в «Терминале».

Посмотрите в каждом файле, как это; Я использую nano в этом примере, но не стесняйтесь использовать любой текстовый редактор, который вы предпочитаете

nano  ~/.bash_profile

nano  ~/.bash_login

nano  ~/.profile

Просто найдите ошибочную команду cd /workspace/test/app/helpers в любой / всех из них и удалите команду.

Кроме того, если вы нервничаете по поводу удаления чего-либо в этих файлах, просто закомментируйте строки знаком # и посмотрите, что произойдет. Пока команда закомментирована, она не будет выполняться. И если он не запустится, ошибки больше не будет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .