2

У меня есть проблема, когда при загрузке новых окон терминала я должен получить ~/.profile для корректной работы моего пути PHP.

По сути, моя проблема заключается в том, чтобы заставить терминал использовать MAMP PHP и MySQL вместо стандартных.

У меня есть намеченные пути, но каждый раз, когда я открываю новое окно, я должен использовать команду

source ~/.profile

Есть ли причина, по которой Mac OS X не регистрирует / ищет / вставляет правильный термин здесь .profile? Я прочитал .bash_profile переопределит .profile , но путь PHP также определен в .bash_profile .

Вот содержимое каждого файла.

Содержимое .bash_profile:

export PATH="$PATH:/Users/[username]/bin:/Applications/MAMP/bin/php/php5.5.14/bin:/Applications/MAMP/bin/mysql"

Содержание .profile:

export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_PHP:$PATH"

3 ответа3

1

Я считаю, что ответ ясен, когда вы посмотрите на логический порядок того, что вы установили в .bash_profile (который не работает) по сравнению с .profile (который работает).

Вот ваш .bash_profile:

export PATH="$PATH:/Users/[username]/bin:/Applications/MAMP/bin/php/php5.5.14/bin:/Applications/MAMP/bin/mysql"

А вот и твой .profile:

export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_PHP:$PATH"

Ключ к решению этой проблемы - посмотреть, где вы устанавливаете новые элементы, связанные с MAMP, по сравнению со стандартным $PATH ; Порядок считается, потому что оболочка будет действовать (ключевая вещь) первым элементом, который она найдет в своем списке путей поиска пользователя.

Зная, что вы можете разбить поведение, которое вы видите, вот так:

  • В версии .profile вы устанавливаете $MAMP_PHP как переменную и затем добавляете ее к началу $PATH .
  • Но в версии .bash_profile вы добавляете этот материал после $PATH :/Applications/MAMP/bin/php/php5.5.14/bin:/Applications/MAMP/bin/mysql

Поэтому я бы переделал .bash_profile вот так, чтобы он заработал:

export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_PHP:$PATH:/Users/[username]/bin"

Обратите внимание, как я использую соглашение $MAMP_PHP из .profile что является хорошим способом логически разделить пути для человеческих глаз, и как я просто устанавливаю это значение в /Applications/MAMP/bin/php/php5.5.14/bin так как я понятия не имею, когда будет использоваться этот путь MySQL: /Applications/MAMP/bin/mysql .

С моей точки зрения, используя MAMP версии 2.1.3, я не вижу фактического двоичного файла mysql в указанном вами пути. Традиционно это будет в /Applications/MAMP/Library/bin/ вместе с другими двоичными файлами MAMP. Поэтому, возможно, ваш .bash_profile должен быть настроен так:

export MAMP_BIN=/Applications/MAMP/Library/bin
export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_BIN:$MAMP_PHP:$PATH:/Users/[username]/bin"

Кроме того, то, что /Users/[username]/bin кажется клёвым и слишком специфичным для меня. Если вы поддерживаете директорию пользователя, специфичную для ~/bin вы можете просто установить ~/bin следующим образом:

export MAMP_BIN=/Applications/MAMP/Library/bin
export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_BIN:$MAMP_PHP:$PATH":~/bin

Обратите внимание, что вокруг последней части " нет двойных кавычек (:~/bin), что позволяет ~/ правильно расширяться до домашнего каталога вашего пользователя. Таким образом, вы можете использовать чистую настройку .bash_profile , например, для любой учетной записи, где у пользователя есть каталог ~/bin .

0

Bash ищет в вашем домашнем каталоге .bash_profile , .bash_login и .profile в этом порядке. Тогда bash запустит первое из найденных и перестанет искать.

Таким образом, решение для вас может заключаться в том, чтобы получить ваш .profile в конце вашего .bash_profile или, проще, скопировать обе строки в ваш .profile в конце вашего .bash_profile .

0

В Unix FAQ (для OS X) мы можем прочитать:

Загрузочные файлы Bash

Когда запускается "оболочка входа в систему", она читает файл «/etc/profile», а затем «~/.bash_profile» или «~/.bash_login» или «~/.profile» (в зависимости от того, какой из них существует - он читает только ОДИН из них, проверяя их в указанном порядке).

Когда запускается "оболочка без входа в систему", она читает файл «/etc/bashrc», а затем файл «~/.bashrc».

Обратите внимание, что когда bash вызывается с именем "sh", он пытается имитировать последовательность запуска оболочки Bourne ("sh"). В частности, оболочка без входа в систему, вызванная как "sh", по умолчанию не читает никаких файлов точек. Смотрите страницу руководства bash для деталей.

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

# Load user profile file
if [ -f ~/.profile ]; then
  . ~/.profile
fi

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