Я всегда добавляю ~/bin
к $PATH
в моем ~/.profile
. По умолчанию в Ubuntu.
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Однако, при испытании программного обеспечения, взломе скрипта или тестировании нового программного обеспечения, у которого нет PPA, make-файлов и тому подобного, я предпочитаю организовывать их в каталогах. Например (на данный момент у меня около двенадцати таких проектов в моем ~ / bin):
ber@audrey:~ ☙ ls bin/replicatorg-0033/
contributors.txt examples lib-i686 license.txt readme.txt scripts todo.txt
docs lib lib-x86_64 machines replicatorg skein_engines tools
Это какое-то Java-приложение. replicatorg
это исполняемый файл.
Теперь я мог бы сделать четыре вещи, но я ищу другой, более лучший способ:
~/bin
. ln -s bin/replicatorg-0033/replicatorg bin/replicatorg
. Это иногда работает, не в этом случае. Приложение плохо написано и ожидает библиотеки относительно своего бинарного файла: оно не будет работать при символической ссылке или копировании из своего каталога. Итак: как вы организуете ~/bin
?
Я создаю отдельный каталог для содержания пакетов (~/apps
). Если существует программа, которую я хочу иметь в моем $PATH
, я или создать символьную ссылку в ~/bin
или создать обертку сценария оболочки в ~/bin
, если рассматриваемой программе не нравятся символьные ссылки:
#!/bin/sh
exec ~/apps/package/bin/someprogram "$@"
Для больших пакетов со многими программами, добавляя каталог к Вашему $PATH
может быть предпочтительным для предотвращения ~/bin
каталог со многими символьными ссылками на единственный проект. Это зависит от Ваших персональных предпочтений все же.
Никакая потребность отредактировать каждый раз, попробуйте что-то вроде этого:
if [ -f ~/bin ]; then
for i in $( find ~/bin -type d ); do
PATH=$PATH:$i
done
fi