Когда я эхо $ PATH я получаю это: Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools
.
Я хочу удалить некоторые пути из этого, но когда я открываю файл с помощью команды vim /etc/paths
, я получаю следующие результаты:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Файл / etc / path отличается от переменной $ PATH?
/etc/paths
в моем, но я бегу,10.4.11
и с тех пор, вероятно, все изменилось/etc/paths
используется для генерации значения по умолчанию$PATH
, которое вы можете позже изменить~/.bashrc
или~/.profile
Ответы:
/etc/paths
является частью того, что используется для настройки$PATH
процессов оболочки. Когда вы открываете новое окно терминала, оно запускаетсяbash
, в котором запускаются несколько сценариев запуска:/etc/profile
И~/.bash_profile
ИЛИ (если оно не существует)~/.bash_login
ИЛИ (если оно тоже не существует)~/.profile
. Эти скрипты настраивают среду оболочки, в том числе$PATH
.Одна из вещей
/etc/profile
- это запустить/usr/libexec/path_helper
, который читает/etc/paths
и любые файлы/etc/paths.d
, и добавляет их содержимое$PATH
. Но это только отправная точка; Ваш собственный скрипт запуска (если таковой существует) может добавить$PATH
, отредактировать его, полностью заменить и т. д.Мне кажется, что ваш стартовый скрипт (и / или вещи, которые он запускает) добавляет несколько записей в базовый набор, из которого он получает
/etc/paths
. «Users / myusername / .node_modules_global / bin: /Users/mac/.node_modules_global/bin:» добавляется в начало$PATH
(означает, что эти каталоги будут искать в первую очередь), и «: / Users / mac / Library / Android / sdk / platform-tools: / platform-tools "добавляется в конце. Если вы хотите точно знать, что их добавляет, вам нужно взглянуть на сценарий запуска.Кстати, этот процесс настройки
$PATH
относится только к оболочкам bash "login". Все, что запускается оболочкой bash, будет наследоваться$PATH
от него, поэтому, вероятно, по сути, то же самое. Оболочки не-входа в bash следуют несколько иному процессу установки. Другие оболочки и вещи, которые не были запущены из оболочки вообще (например, задания cron), могут иметь совершенно другое значение$PATHs
.источник
/usr/local/bin/bash
как установленоbrew
, без-l
аргумента),/usr/libexec/path_helper
не используется и/usr/local/bin
не включается по умолчанию в$PATH
. Чтобы использоватьpath_helper
в сценарии или в интерактивном режиме, командаeval $(/usr/libexec/path_helper)
.Первые места, на которые я хотел бы посмотреть, есть ли изменения,
Если вы используете что-то, что не является Bash, проверьте файлы конфигурации, чтобы увидеть упоминания о PATH.
источник