В чем разница между «echo $ PATH» и / etc / paths?

В Linux такие инструменты, как beep , могут использовать ioctl на консольном устройстве для выдачи заданного звука. Чтобы быть более конкретным, beep будет использовать ioctl KIOCSOUND ioctl, но есть также ioctl KDMKTONE ioctl, который можно использовать для генерации звука.

Насколько я понимаю, первый запускает звук, который длится до тех пор, пока он не будет явно отменен, а второй будет издавать звуковой сигнал заранее определенной продолжительности. См. справочную страницу console_ioctl (4) для получения дополнительной информации.

Итак, если вас не устраивает то, что делает beep , вы можете написать несколько строк кода для прямого доступа к этим ioctl. Предположим, у вас есть полный доступ к / dev / console , для чего вполне могут потребоваться привилегии root.

10
14.09.2018, 20:09
2 ответа

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

18
27.01.2020, 20:01

Первые места, которые я хотел бы проверить на наличие модификаций, это

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

Если вы используете что-то, что не является Bash, проверьте файлы конфигурации, чтобы увидеть любое упоминание о PATH.

0
27.01.2020, 20:01

Теги

Похожие вопросы