Qual é a maneira correta de adicionar binários de usuário único ao $PATH?

Qual é a maneira correta de adicionar binários de usuário único ao $PATH?

como a maioria das pessoas, ocasionalmente estou instalando coisas ou escrevendo/usando scripts provenientes de fora dos repositórios de minhas distros ou "feitos à mão", para que eles não acabem no caminho padrão do sistema ou não devam ser adicionados a ele.

Agora existem diferentes maneiras de proceder.

Algo que eu só queira executar ocasionalmente ou que só precise ser executado em um determinado diretório pode permanecer como está desde então cd ~/stuff/fancyappe então ./fancyexecutableé bom o suficiente.

Mas, às vezes, posso querer simplesmente fazer algo como backup.shem qualquer local em que estou ou outros programas precisam estar cientes de um determinado executável e, para isso, posso atualizar meu $PATH com algo como PATH=$PATH:~/bin/backup/e export PATHreiniciar meu sessão. No entanto, isso me leva ao problema de ter um "lixo inicial" onde movo/vinculo simbolicamente todos os executáveis ​​para ~/bin/, ou quando quero ter um bin inicial normal, tendo que adicionar todos os subdiretórios ao meu caminho. (Ou eu poderiahackear algo juntos para tornar o caminho recursivo)

Então, qual é a maneira adequada, recomendada e segura de lidar com o seu próprio, binque terá vários executáveis ​​e subdiretórios?

Responder1

Eu instalo todo o software criado localmente no /home/user/.localdiretório. Este diretório basicamente copia a estrutura de diretórios /usrcomo você pode ver:

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

Você pode apontar as ferramentas de construção para definir este diretório como o prefixo de instalação. Algumas ferramentas usam o valor da variável de ambiente PREFIXpara determinar o local de instalação, por isso é uma boa ideia definir isso também, mas não confie nisso.

Observe que você terá que definir o valor de vários ambientes como PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH, CLASSPATHde acordo.

informação relacionada