Как правильно добавлять исполняемые файлы одного пользователя в $PATH?

Как правильно добавлять исполняемые файлы одного пользователя в $PATH?

Как и большинство людей, я время от времени устанавливаю что-то или пишу/использую скрипты, которые получены не из репозиториев моего дистрибутива или созданы «вручную», поэтому они могут не оказаться в системном пути по умолчанию или не должны туда добавляться.

Теперь есть разные способы действовать.

Что-то, что мне может понадобиться запускать только изредка или что в любом случае нужно запустить только в определенном каталоге, может оставаться таким, как есть, cd ~/stuff/fancyappи тогда ./fancyexecutableэтого будет достаточно.

Но иногда мне может понадобиться просто сделать что-то вроде backup.shиз любого места, где я нахожусь, или другим программам нужно знать об определенном исполняемом файле, и для этого я могу обновить $PATH чем-то вроде PATH=$PATH:~/bin/backup/, export PATHи перезапустить сеанс. Однако это приводит меня к проблеме либо наличия "домашнего bin", куда я перемещаю/создаю символическую ссылку на каждый исполняемый файл ~/bin/, либо, когда я хочу иметь упорядоченный домашний bin, необходимости добавлять каждый подкаталог в свой путь. (Или я мог быпридумайте что-нибудь, чтобы сделать путь рекурсивным)

Так каков же правильный, рекомендуемый и безопасный способ работы с вашим каталогом, binв котором будет несколько исполняемых файлов и подкаталогов?

решение1

Я устанавливаю все встроенное локальное ПО в /home/user/.localкаталог. Этот каталог в основном копирует структуру каталогов, /usrкак вы можете видеть:

> ls ~/.local
bin  etc  include  jars  lib  lib64  libexec  man  share

Вы можете указать инструментам сборки задать этот каталог как префикс установки. Некоторые инструменты используют значение переменной среды PREFIXдля определения места установки, поэтому неплохо установить и его, но не полагайтесь на него.

Обратите внимание, что вам придется установить значение нескольких сред, таких как PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH, CLASSPATHсоответственно.

Связанный контент