Вопрос или проблема
Может кто-нибудь объяснить, в какой директории (или директориях) мне следует размещать свои собственные шелл-скрипты и конфигурационные файлы на macOS?
/usr/local/bin/
?/usr/local/etc/
?$HOME/bin/
?$HOME/etc/
?- … ?
Какова наилучшая практика или самый распространенный способ?
Примеры файлов:
webpage2pdf.zsh
– скрипт ImageMagick для конвертации веб-страницы в PDF.webpage2pdf
– конфигурационный файл для него.zshrc_my-own
– конфигурационный файл Zsh, который подключается в моем~/.zshrc
с помощьюsource
, как предложил Жиль, чтобы избежать случайных перезаписей: https://unix.stackexchange.com/a/787409
Насколько я знаю, единственное, что приближается к настоящему стандарту, это FHS (Стандарт файловой иерархии). Он не обновлялся почти 10 лет, но, возможно, его хранители посчитали, что изменения не нужны. Для систем Apple вы можете ознакомиться с этим документом… прокрутите вниз, чтобы найти материалы, относящиеся к macOS. Эта документация также старая, но, поскольку документация Apple обычно либо плохая, либо отсутствует, это гораздо лучше среднего для них! 🙂 Но говоря о плохой документации, Фонд Линукс также не проявил себя на отличном уровне; например, посмотрите “Другие ссылки” внизу этой страницы.
Так что да – рекомендации по различным файловым иерархиям довольно субъективны. И некоторые из рекомендаций, которые существуют в форме стандартов, не точны. Иными словами, будьте готовы к некоторой двусмысленности.
Тем не менее, возможно, что лучшие, самые сжатые рекомендации могут быть найдены на вашем macOS из терминала: просто введите man hier
(альтернативная онлайн-версия):
/usr/local/ исполняемые файлы, библиотеки и т.д., не включенные в базовую операционную систему
Наконец, вы, вероятно, не должны упускать из виду возможность использования $HOME/bin
для (хотя бы некоторых из) ваших скриптов. Мне кажется, я помню, что по крайней мере один дистрибутив Linux (Debian) теперь автоматически добавляет $HOME/bin
в вашу переменную среды PATH (если она существует; через ~/.profile
). Вы могли бы сделать что-то похожее на своем macOS.
/etc
обычно хранит конфигурационные файлы.
/usr/local
будет отделен от вашего $HOME
, поэтому, если однажды вы решите сделать резервную копию $HOME
, чтобы сохранить свои файлы, эти скрипты не будут скопированы.
Я бы просто выбрал $HOME/bin
, не забудьте добавить его в свой $PATH
.
Ответ или решение
Когда речь заходит о том, где хранить собственные shell-скрипты и конфигурационные файлы на macOS, важно следовать лучшим практикам и учитывать структуру файловой системы. Рассмотрим несколько ключевых директорий и как правильно ими пользоваться.
Основные директории для хранения файлов
-
/usr/local/bin/
- Эта директория предназначена для выполнения пользовательских исполняемых файлов, которые не являются частью базовой операционной системы. Если вы хотите, чтобы ваши скрипты были доступны всему пользователю системы, это подходящее место для их хранения. Однако для большей персонализации рекомендуется использовать директории в домашней папке пользователя.
-
/usr/local/etc/
- Здесь обычно хранятся конфигурационные файлы для программ, установленных в
/usr/local
. Хотя вы можете использовать эту директорию для хранения конфигурационных файлов, это не самый распространенный способ для личных настроек.
- Здесь обычно хранятся конфигурационные файлы для программ, установленных в
-
$HOME/bin/
- Ваша домашняя директория – это идеальное место для хранения собственных скриптов. Создайте подкаталог
bin
в вашем$HOME
(например,/Users/yourusername/bin
) и разместите там свои скрипты. Это позволяет легко управлять ими и гарантирует, что они будут сохранены при резервном копировании вашего пользователя. Не забудьте добавить эту директорию в переменную окруженияPATH
, чтобы иметь возможность запускать скрипты без указания полного пути.
- Ваша домашняя директория – это идеальное место для хранения собственных скриптов. Создайте подкаталог
-
$HOME/etc/
- Хотя
etc
чаще используется для системных конфигурационных файлов, вы можете создать этот каталог для хранения своих собственных конфигураций, таких как.webpage2pdf
. Имейте в виду, что наличие отдельного каталога может потребовать дополнительной настройки при доступе к файлам.
- Хотя
Лучшая практика
Исходя из вышеизложенного, оптимальным вариантом хранения собственных shell-скриптов и конфигурационных файлов на macOS является использование домашней директории. Создание каталога $HOME/bin
для скриптов и $HOME/etc
для конфигурационных файлов не только упрощает процесс их управления, но и защищает от случайного удаления или потери данных при изменении системных настроек.
Примеры использования
-
Скрипт для конвертации веб-страниц в PDF:
- Разместите файл
webpage2pdf.zsh
в каталоге$HOME/bin/
для удобного доступа.
- Разместите файл
-
Конфигурационный файл:
- Храните файл
.webpage2pdf
в каталоге$HOME/etc/
для аккуратного управления настройками.
- Храните файл
-
Содержимое
.zshrc
:- В вашем
.zshrc
используйте директивуsource $HOME/.zshrc_my-own
, что позволит избежать перезаписи стандартных настроек Zsh.
- В вашем
Заключение
В результате использования предложенных рекомендаций, ваши собственные скрипты и конфигурационные файлы будут организованы эффективно, а доступ к ним станет простым и удобным. Следуя лучшим практикам управления файлами на macOS, вы создадите надежную и легко поддерживаемую среду разработки, что крайне важно для продуктивной работы в сфере информационных технологий.