Как сбросить переменную $ PATH в Mac OS X?

17

Я испортил свою переменную пути, и теперь некоторые приложения, которые я запускаю, выдают ошибки, говорящие о Command Not Found (ошибка 127) для таких команд, как date и sleep . Эти команды прекрасно работают, когда выполняются непосредственно в оболочке.

Я предполагаю, что это как-то связано с искаженной переменной $ PATH, и мне нужно знать, как ее сбросить. Я удалил файлы ~ / .bashrc , ~ / .bash_profile , /etc/bash.bashrc и ~ / .bashrc и ~ / .profile .

Какие другие файлы могут содержать мой $ PATH ? Есть ли какой-нибудь более простой способ сбросить путь, чем копаться в бесчисленных файлах, которые могут содержать мой путь?

Обратите внимание, что эта проблема только с моим пользователем. Я сделал тестового пользователя в моей системе, и путь был в порядке, вернуться к нормальному.

ОБНОВЛЕНИЕ: Спасибо. Я не знаю, какой из удаленных файлов сделал это, но все снова работает. Вы, ребята, сделали то, что «Эксперты» не смогли. И да, Крис, ты был прав. Настройки PATH, которые я сделал, были в bash_login. Но так или иначе это работало без того, чтобы я удалил те настройки. Я думаю, это могло быть потому, что я использовал эту предварительную панель под названием «RCEnvironment», и я ввел путь с кавычками и: PATH в нем. Я не знаю, принимает ли он кавычки, и он не заменяет: $ PATH, так что, вероятно, это корень ошибки. Я забыл, что у меня даже был этот preppane!

Нил
источник
1
/ etc / profile является наиболее вероятным местом для установки начальных значений параметров PATH, но это может повлиять на всех пользователей. Существует также ~ / .bash_login, который вы не перечислили (хотя, возможно, вы его уже удалили).
Крис Джонсен

Ответы:

19

Если у вас есть файл ~ / .MacOSX / environment.plist, проверьте его, чтобы узнать, предоставляет ли он значение PATH по умолчанию.

Если это в формате XML (списки могут быть во многих форматах), вы можете редактировать с любым текстовым редактором. Проверьте это, plutil -lint ~/.MacOSX/environment.plistесли вы редактируете это вручную.

Или вы можете использовать такие команды, как значения по умолчанию или PlistBuddy, чтобы делать контролируемые изменения в XML-файлах или файлах двоичного формата plist.


Вы всегда можете установить свой собственный PATH в любом из файлов инициализации вашей оболочки.

Поместите что-то вроде следующего в ваши файлы запуска вашей оболочки ( .bashrcили .bash_profile/ .bash_login/ .profile):

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

# add custom, local installations to PATH
PATH=/usr/local/bin:/usr/local/sbin:"$PATH"

# add MacPorts to PATH
PATH=/opt/local/bin:/opt/local/sbin:"$PATH"

Это переопределит любой установленный по умолчанию PATH при запуске оболочки (первый PATH=не использует $PATH, поэтому он всегда будет начинаться только с того, что вы ему дадите).

Никогда не будет использоваться только один из файлов «Войти» (первый, который существует и читаемые ~/.bash_profile, ~/.bash_loginи ~/.profileбудет использоваться). .profileдля обратной совместимости с другими оболочками - если вы используете его, убедитесь, что он не содержит синтаксиса, характерного для bash . Если вы используете .bash_loginили .bash_profile(они функционально эквивалентны, за исключением имен), то используйте строку, подобную [[ -e ~/.bashrc -a -r ~/.bashrc ]] && source ~/.bashrc ]]верхней, чтобы оболочки входа в систему также получали настройки, сделанные в вашем .bashrc.

Если вы хотите, чтобы все экземпляры bash имели одинаковый PATH, используйте .bashrc. Если вы часто обнаруживаете, что в интерактивном режиме изменяете PATH отдельной оболочки из командной строки и хотите использовать этот измененный PATH в подоболочках (в случаях, которые, вероятно, не очень распространены), вам следует вместо этого поместить операторы в один из файлов 'login' , Выберите только один из файлов входа и используйте его.

Крис Джонсен
источник
8

1. Откройте свой терминал

2.Вы могли бы сначала просто проверить свой текущий $PATHтип

echo $ PATH

до терминала

3.Если $PATHтот терминал вернул тот путь, который вы хотите, значит, вы хороши; если нет, введите

экспорт PATH = / usr / bin: / bin: / usr / sbin: / sbin

затем введите

коснитесь ~ / .bash_profile

, а затем введите

открыть ~ / .bash_profile

, затем вы найдете открываемый EditText, теперь введите желаемый путь в этом EditText; Например, введите

PATH = / USR / бен: / бен: / USR / SBIN: / SBIN

(это значение $PATHпо умолчанию для Mac, учитывая, что вы хотите сбросить его, $PATHпоэтому вам, вероятно, следует набрать его), сохраните его, затем закройте EditText, затем закройте Terminal.

4.Теперь вы уже изменили $PATHили сбросили настройки Mac по умолчанию $PATH!

rObOtAndChalie
источник
2
Я чувствую, что многое из вышесказанного не имеет никакого эффекта. Как вы думаете, почему это touchнеобходимо? Кроме того, поскольку вы все равно закрываете терминал, зачем запускать в exportкомандной строке, а не только добавлять его ~/.bash_profile(что exportтоже нужно ) и покончить с этим? (Или запустите, source ~/.bash_profileчтобы применить изменения к текущему окну.)
Арджан
Правда, кое-что излишне. Сохранение любого значения PATH в .bash_profile должно сделать.
ThinkCode
1

rc/profileПоказанные правки Криса Джонсона также хорошо работают в /etc/profile.

Я только что добавил:

export PATH="/usr/local/mariadb/bin:$PATH"

в мой /etc/profileфайл в Mac OS X 10.9 Mavericks, чтобы завершить установку MariaDB (которая отлично подходит для замены MySQL).

zigmoo
источник