Maneira apropriada de usar shebang para bash

2

Quais são as opções recomendadas no shebang do bash ?

#!/bin/bash -e

Eu tenho atualmente como acima. Isso origina $HOME/.bashrc .

Eu não quero usar .bashrc / .profile do usuário, pois isso pode interferir no script e atrasar a inicialização do script (o diretório base geralmente está localizado na unidade de rede).

Existe alguma opção de linha de comando que desabilita isso?
E quais são as outras bandeiras recomendadas para colocar?

    
por balki 13.02.2012 / 15:46

2 respostas

4

Você só precisa garantir que BASH_ENV não esteja definido. Na seção INVOCATION de bash(1) :

       When bash is started non-interactively, to  run  a  shell  script,  for
       example, it looks for the variable BASH_ENV in the environment, expands
       its value if it appears there, and uses the expanded value as the  name
       of  a  file to read and execute.  Bash behaves as if the following com‐
       mand were executed:
              if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
       but the value of the PATH variable is not used to search for  the  file
       name.

Outros arquivos de ponto ( ~/.bash_profile , ~/.bash_logout , etc.) são lidos quando o shell é iniciado interativamente.

Infelizmente, você não pode controlar o ambiente a partir do script, mesmo usando #!env (que requer apenas um argumento, neste caso o programa shell, bash ). O melhor que você poderia esperar é limpar o ambiente dentro do script ou wrapper e começar com um ambiente claro, que pode não ser o que você deseja.

    
por 13.02.2012 / 16:10
2

Apenas leia um pouco "man bash".

Na seção "INVOCATION", você descobriria que as opções " - noprofile " ou " - norc " devem funcionar.

    
por 13.02.2012 / 15:54