A melhor maneira de organizar o sh / bash / python / etc. roteiros

11

Qual é a melhor maneira de organizar os scripts sh / bash / python que você coleta e escreve em seu sistema?

    
por badp 17.09.2008 / 09:35

12 respostas

7

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.

    
por 17.09.2008 / 09:43
3

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].

    
por 17.09.2008 / 09:46
3

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:~ $
    
por 17.09.2008 / 15:15
2

Assim como todo mundo aqui, eu uso ~/bin para a maioria dos scripts e deixo as coisas específicas do projeto em ~/projects/whatever .

    
por 17.09.2008 / 10:44
2

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/
    
por 17.09.2008 / 13:24
2

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)

    
por 21.11.2009 / 17:51
1

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.

    
por 17.09.2008 / 09:39
1

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.

    
por 17.09.2008 / 10:39
1

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

    
por 17.09.2008 / 11:03
1

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"
    
por 17.09.2008 / 13:05
1

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.

    
por 17.09.2008 / 15:53
1

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).

    
por 21.11.2009 / 21:54