Как организовать скрипты и инструменты в ~ / bin в каталогах, но иметь их в $ PATH?

Я всегда добавляю ~/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 это исполняемый файл.

Теперь я мог бы сделать четыре вещи, но я ищу другой, более лучший способ:

  1. Симлинк, который можно найти в ~/bin. ln -s bin/replicatorg-0033/replicatorg bin/replicatorg. Это иногда работает, не в этом случае. Приложение плохо написано и ожидает библиотеки относительно своего бинарного файла: оно не будет работать при символической ссылке или копировании из своего каталога.
  2. Также добавьте каждый подкаталог в $ PATH. Но это означает редактирование ~ / .profile каждый раз, когда я перемещаю, загружаю или клонирую новые каталоги.
  3. Установите приложения правильно для всей системы, создав скрипт makefile / install. Видно, что большинство приложений - быстрые хаки, уродливые, в разработке, скриптах и ​​инструментах, это не очень хорошая идея, ИМХО.
  4. Переместите все содержимое ~ / replicatorg-0033 / в ~ / bin. Верно.

Итак: как вы организуете ~/bin?

2
задан 7 May 2012 в 13:21

2 ответа

Я создаю отдельный каталог для содержания пакетов (~/apps). Если существует программа, которую я хочу иметь в моем $PATH, я или создать символьную ссылку в ~/bin или создать обертку сценария оболочки в ~/bin, если рассматриваемой программе не нравятся символьные ссылки:

#!/bin/sh
exec ~/apps/package/bin/someprogram "$@"

Для больших пакетов со многими программами, добавляя каталог к Вашему $PATH может быть предпочтительным для предотвращения ~/bin каталог со многими символьными ссылками на единственный проект. Это зависит от Ваших персональных предпочтений все же.

2
ответ дан 7 May 2012 в 13:21
  1. Добавляют каждый подкаталог к $PATH также. , Но это означает редактировать ~/.profile каждый раз, я перемещаю, загружаю или клон мерзавца новые каталоги.

Никакая потребность отредактировать каждый раз, попробуйте что-то вроде этого:

if [ -f ~/bin ]; then
   for i in $( find ~/bin -type d ); do
     PATH=$PATH:$i
   done
fi
4
ответ дан 7 May 2012 в 13:21

Другие вопросы по тегам:

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