Como organizar scripts e ferramentas em ~ / bin nos diretórios, mas tê-los em $ PATH?

2

Eu sempre adicionei ~/bin ao $PATH no meu ~/.profile . Como é padrão no Ubuntu.

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

No entanto, quando experimentando software, hackeando um script ou testando um novo software que não possui PPAs, makefiles e outros, eu prefiro organizá-los em diretórios. Por exemplo (eu tenho cerca de doze desses projetos no meu ~ / bin neste momento):

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

Esta é uma aplicação java. replicatorg é o executável.

Agora, posso fazer quatro coisas, mas estou procurando outra maneira melhor:

  1. Vincule simbolicamente o item exectuable em ~/bin . %código%. Isso às vezes funciona, não neste caso. O aplicativo é mal escrito e espera bibliotecas em relação ao seu binário: ele não será executado quando vinculado ou copiado de seu diretório.
  2. Adicione todos os subdiretórios ao $ PATH também. Mas isso significa editar ~ / .profile toda vez que eu mover, baixar ou clonar novos diretórios.
  3. Instale os aplicativos adequadamente em todo o sistema criando um script makefile / install. Visto que a maioria dos aplicativos são hacks rápidos, feios, em desenvolvimento, scripts e ferramentas, isso não é uma boa idéia, IMHO.
  4. Mova todo o conteúdo de ~ / replicatorg-0033 / para ~ / bin. Certo.

Então: como você organiza seu ln -s bin/replicatorg-0033/replicatorg bin/replicatorg ?

    
por berkes 07.05.2012 / 11:21

2 respostas

2

Eu criei um diretório separado para armazenar pacotes ( ~/apps ). Se houver um programa que eu queira ter no meu $PATH , crie um link simbólico em ~/bin ou crie um wrapper de script em ~/bin se o programa em questão não gostar de links simbólicos:

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

Para pacotes maiores com muitos programas, adicionar o diretório ao seu $PATH pode ser mais preferível para evitar criar (e esquecer de criar) links simbólicos em ~/bin . Isso depende das suas preferências pessoais.

    
por Lekensteyn 07.05.2012 / 11:42
4
  1. Adicione todos os subdiretórios ao $ PATH também. Mas isso significa editar ~ / .profile toda vez que eu mover, baixar ou clonar novos diretórios.

Não há necessidade de editar todas as vezes, tente algo assim:

if [ -f ~/bin ]; then
   for i in $( find ~/bin -type d ); do
     PATH=$PATH:$i
   done
fi
    
por user1008781 27.01.2013 / 22:09