1

У меня установлено bash-complete с использованием macports и следующих строк в моем .bash_profile

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

но завершение не работает, когда я открываю Терминал, однако оно начинает работать после получения .bash_profile или после 'bash -l'.

Я использую OSX 10.6, в настройках Терминала выбрана «Оболочка открывается с: Оболочка входа в систему по умолчанию (/usr/bin/login)».


Решено: то, что я пропустил, это строка в разделе Как использовать bash-complete

Убедитесь, что вы добавили это после любой манипуляции с PATH, иначе bash-Завершение не будет работать правильно.

когда я переместил строки после манипуляции PATH, все работает нормально.

1 ответ1

1

Я бы использовал команду chsh чтобы убедиться, что ваша оболочка на самом деле Bash; если ваша оболочка - /bin/sh вместо /bin/bash , Bash будет имитировать историческую оболочку и не будет читать ~/.bash_profile .

От man bash:

Если bash вызывается с именем sh, он пытается максимально близко имитировать поведение при запуске исторических версий sh, при этом также соответствует стандарту POSIX. При вызове в качестве интерактивной оболочки входа в систему или неинтерактивной оболочки с параметром --login сначала он пытается прочитать и выполнить команды из /etc/profile и ~/.profile в указанном порядке.

[...]

Поскольку оболочка, вызываемая как sh, не пытается читать и выполнять команды из любых других файлов запуска, опция --rcfile не имеет никакого эффекта.

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