Яка різниця між "echo $ PATH" та / etc / paths?


10

Коли я відлуння $ 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 / paths від змінної $ PATH?


Яка версія OS X? У мене немає /etc/pathsв моєму, але я біжу 10.4.11і, мабуть, з того часу все змінилося
Фокс

1
Але згідно з відповіддю на AskDifferent , /etc/pathsвикористовується для генерації за замовчуванням $PATH, який згодом ви можете змінити
Фокс

Це за замовчуванням. На той час , користувач починає свою оболонку, хоча, було б модифікувати інші файли, SHELL джерел, як ~/.bashrcі~/.profile
Сергій Kolodyazhnyy

Відповіді:


14

/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 shell, успадковуватиме $PATHйого, тому, ймовірно, є по суті те ж саме. bash не-вхідні оболонки слідують дещо іншому процесу налаштування. Інші снаряди та речі, які взагалі не почалися з оболонки (наприклад, завдання на крон), можуть мати зовсім інші $PATHs.


Зауважте, що для оболонок без входу (наприклад /usr/local/bin/bash, встановлених brew, без -lаргументу), /usr/libexec/path_helperвони не використовуються та /usr/local/binне включаються за замовчуванням у $PATH. Для використання path_helperв сценарії або інтерактивно команда є eval $(/usr/libexec/path_helper).
Кайл Странд

0

Перші місця, які я хотів би перевірити на зміни,

~/.profile
~/.bashrc
~/.bash_profile

Якщо ви використовуєте щось, що не є Bash, перевірте файли конфігурації, щоб побачити будь-яку згадку про PATH.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.