7

Я не знаю, когда это начало происходить, но теперь, каждый раз, когда я перехожу к каталогу, он отображает путь прямо перед тем, как меняет каталоги. Это происходит, когда я захожу на сервер, но не происходит на моей локальной машине. Сервер работает под управлением Linux. Моя локальная машина работает под управлением Mac OS X.

Я искал в Google, а также заглянул на страницу руководства bash, но ничего не смог найти. Мой .bashrc/.bash_profile не имеет ничего общего с 'cd' (что я знаю).

Как мне изменить эту "функцию"?

3 ответа3

12

Оболочка авто-эхо, потому что CDPATH определяется как переменная среды. Если вы ОТКЛЮЧИТЕ CDPATH, поведение CD по умолчанию появится снова.

3

Приведенный выше ответ, предлагающий отключить CDPATH, вероятно, является лучшим. Однако, если вы хотите, чтобы CDPATH оставался активным во время cd -ing, вы также можете использовать в своих скриптах что-то вроде:

cd /path/to/wherever > /dev/null

1

Другим вариантом является более постоянное переопределение встроенного cd с помощью функции bash. Я нашел что-то вроде этого эффективным, когда помещается в ваш файл ~/.profile (или аналогичный):

function cd() {
    if [ -z "$*" ]; then 
        destination=~
    else
        destination=$*
    fi
    builtin cd "${destination}" >/dev/null && ls
}
  • Это сохраняет использование cd без аргументов для возврата в ваш домашний каталог.
  • >/dev/null отвечает за проглатывание отображаемого имени папки. (Это повторение имени папки - это то, что нарушает сценарии, которые используют FOO=$(cd $SOMEVAR && pwd) чтобы сохранить полный путь к переменной.)
  • И наконец; как написано, эта функция выполняет автоматическое ls после смены каталогов. (Удалите && ls чтобы остановить это.)

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