Eu tenho todos esses scripts em ~ / bin, que também é um svn funcionando para todos os scripts que eu uso freqüentemente em vários computadores. Ele também contém partes da minha configuração zsh, como aliases e variáveis ambientais.
Qual é a melhor maneira de organizar os scripts sh / bash / python que você coleta e escreve em seu sistema?
Depende do objetivo do script. Eu geralmente decompôo o meu entre um dos dois locais. Ou ~ / tools para coisas sérias que reutilizo regularmente ou ~ / playground / [nome do recurso com o qual estou brincando].
Eu tenho um diretório ~ code, com um subdiretório para cada idioma que eu uso, e no meu .bashrc eu tenho uma instrução para fornecer cada um deles para o meu $ PATH. Por exemplo:
dsm@localhost:~ $ cat .bashrc
...
export PATH="$(
find /home/dsm/code -mindepth 1 -maxdepth 1 -type d -print\
| perl -ne 'chomp; print"${_}:";'
)${PATH}" ;
...
dsm@localhost:~ $
Assim como todo mundo aqui, eu uso ~/bin
para a maioria dos scripts e deixo as coisas específicas do projeto em ~/projects/whatever
.
O que eu faço é isto:
Tem / home / myname / Scripts /
Eu coloquei todos os meus scripts lá (classifica em diretórios baseados em sua função / projeto). Agora, a melhor parte é que todo o / home / myname / Scripts / é controlado por versão (com SVN). Dessa forma, posso modificar e ainda posso rever minhas alterações.
para que todos os aplicativos reconheçam isso, você pode tentar adicionar o caminho para / etc / profile (para o bash).
em / etc / profile, última linha, adicione
export PATH=${PATH}:/home/myname/Scripts/
Eu mantenho todas as minhas coisas de desenvolvimento sob o user \ dev, que é linkado com a minha pasta dropbox, para manter tudo em backup. (ok, eu menti, a maioria das coisas gráficas está em dev\..\graphics
para reduzir o uso de dropbox para coisas que não precisam de backup com frequência)
Os scripts ficam no dev e, se eu me encontrar usando-os com frequência, vou colocar algo em falso para eles, em vez de ter tudo lá no meu caminho. ('alias' aqui referindo-se a doskey, que eu automatizei com um script python que eu aliasse para alias)
Atualmente, estou armazenando tudo em uma pasta no meu diretório pessoal, ~ / sh. Eu adicionei-o ao PATH em .bashrc (e .zshrc, já que eu uso os dois.)
A falha é que os aplicativos que não são iniciados por um terminal, como o servidor X, não selecionam o valor modificado de PATH. Sou forçado a preceder 'sh /' ao nome do arquivo quando eu inicio esses scripts a partir da interface gráfica.
A maioria dos scripts que escrevo são específicos de um determinado projeto, então deixo-os no diretório desse projeto. Você não precisa adicioná-los a nenhum PATH, e é fácil lembrar para que servem.
Para scripts globais, por outro lado, um diretório ~ / sh parece um vencedor.
No Windows, você pode definir variáveis de ambiente em todo o sistema para todos os usuários ou para um usuário específico.
Isso significa que sempre que um programa é iniciado, ele conhece as variáveis de ambiente que você definiu. Naturalmente, você também pode definir as variáveis de ambiente de outro processo, como o CMD, e neste caso, apenas os programas que estão sendo iniciados a partir desse processo conhecerão essas variáveis.
Eu não sei uma maneira no Linux de definir variáveis de ambiente para todo o sistema para usuários específicos, mas existe uma maneira de definir variáveis de ambiente para todo o sistema para todos os usuários.
você pode escrever o valor que deseja neste arquivo: / etc / environment
Os valores definidos neste arquivo serão reconhecidos por todos os programas, para todos os usuários.
Você pode fazer 'man pam_env' para obter mais informações sobre o daemon que realmente processa esse arquivo.
Espero que ajude,
Jonathan Orlev
Eu mantenho todos os meus scripts usados com frequência em ~ / scripts e configuro meu / etc / profile para incluir essa pasta no meu caminho para todos os usuários.
if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${ROOTPATH}"
else
PATH="/usr/local/bin:/usr/bin:/bin:${PATH}"
fi
PATH="${PATH}:~/scripts"
Para scripts usados com frequência, estou usando o ~ / bin. Você também pode querer definir algo como
export PATH=/home/USER/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
no arquivo ~ / .bashrc para adicionar scripts próprios para executáveis. Mas esse método é muito inseguro, e recomendo que todos sempre usem caminhos completos para todos os executáveis, incluindo aqueles em ~ / bin. Por exemplo. / usr / bin / sudo em vez de apenas sudo.
Eu coloquei todos os meus scripts (qualquer coisa que é potencialmente independente de plataforma) em ~ / cmd e prefixei isso (e um monte de outras coisas) para PATH em meu .zlogin e .bash_profile.
Eu uso ~ / bin para alguns binários específicos da plataforma instalados manualmente (ou links simbólicos para tais binários).
Manter o material específico da plataforma / máquina fora de ~ / cmd facilita a cópia de uma máquina para outra (tenho o meu no Git para fornecer histórico e transporte entre as máquinas).