Forma preferida de instalar funções bash?

5

Eu escrevi uma função bash chamada up que compartilho via github. Agora estou lutando com instruções de instalação. Eu sei de duas opções para 'instalar' funções bash:

  1. coloque-os em .bashrc
  2. coloque-os em um arquivo chamado .bash_functions e coloque esse arquivo em .bashrc

Então, minha ideia seria sugerir o download da função e modificar o arquivo .bashrc de acordo.

Eu investiguei como projetos semelhantes implementam isso e alguns deles até manipulam o arquivo .bashrc na instalação (ou seja, eles colocam a função lá). Parece bastante comum fazer isso, mas eu sinto que manipular o .bashrc automaticamente é uma má idéia.

Então, qual é o caminho preferido? Existe algum consenso sobre isso?

    
por helpermethod 29.11.2013 / 11:01

1 resposta

4

Existem 3 formas de distribuir:

  1. adicione linhas a $HOME/.bashrc
  2. um arquivo originado por .bashrc
  3. um arquivo que pode ser incluído no diretório /etc/profile.d

Eu diria que depende do número de funções e seus comprimentos. Se tiver duas ou mais funções, e elas forem demoradas, eu as distribuiria quase exclusivamente como um único arquivo (ou arquivos) que é originado por meio do arquivo $HOME/.bashrc do usuário ou incorporado em /etc/profile.d , por meio de um script fornecido por você .

Se é uma única função ou talvez 2, e eles são bem curtos, então eu os distribuo estritamente como um arquivo .txt ou simplesmente os coloco no github como um código que deve ser copiado / colado em seu ambiente existente , isto é, incluído em $HOME/.bashrc ou em um arquivo preexistente em /etc/profile.d , deixando-o para o usuário exatamente onde.

NOTA: /etc/profile.d contém arquivos para vários shells (Csh, Bash, Zsh, etc.). Todos os arquivos incluídos aqui serão usados por esses outros shells também. A nomeação de arquivos aqui é o que controla quais shells os utilizarão. Um .csh fornecerá para o Csh / Tcsh, um .sh para Bash, Zsh, etc.

Sobre o uso adequado de /etc/profile.d

Se você está curioso, os arquivos adicionados a /etc/profile.d devem conter comandos que devem ser executados apenas uma vez, no início do login. (Isso inclui logins gráficos, já que eles começam com um shell de login também.) Se um shell é interativo, o usuário que o está executando provavelmente está logado, e provavelmente tem um ancestral (que o iniciou ou iniciou o que o iniciou, ou iniciei isso, etc.) que era um shell de login.

Veja esta excelente resposta no AskUbuntu intitulada: Por que o / etc / profile não é invocado para shells que não são de login? , que detalha as diferenças entre um shell interativo e o login e suas implicações.

    
por 29.11.2013 / 11:38