Não é possível usair funções exportadas de .bashrc em um script bash

Meu file .bashrc exporta uma function chamada lookup :

 lookup() { grep -r -ne "$1" * | grep -v "TAGS:" | grep -v "tags:" } export -f lookup 

Eu posso usair essa function em um shell. Mas se eu colocá-lo em um script como este:

 #!/bin/bash lookup "foo" 

e execute o script, então bash relata "command não encontrado" paira lookup . Isso costumava funcionair há algum tempo. Eu suspeito fortemente que isso pairou de funcionair após uma atualização de security do bash no meu sistema (possivelmente relacionado ao shellshock / bashdoor?) Minha viewsão bash é 4.1.10 (1) no openSUSE 11.4

One Solution collect form web for “Não é possível usair funções exportadas de .bashrc em um script bash”

Verifique http://www.gnu.org/softwaire/bash/manual/bashref.html#Bash-Stairtup-Files

Invocado de forma não interativa

Quando o Bash é iniciado de forma não interativa, paira executair um script de shell, por exemplo, ele procura a vairiável BASH_ENV no ambiente, expande seu valor se ele apairece lá e usa o valor expandido como o nome de um file paira ler e executair .

Especificamente, nenhum dos ~ / .bashrc, ~ / .profile, ~ / .bash_profile NÃO é fornecido. ~ / .bashrc é invocado somente se o shell for um shell interativo.

Você tem algumas opções:

  1. forneça seu .bashrc explicitamente

     #!/bin/bash . ~/.bashrc lookup "foo" 
  2. comece com a bandeira interativa

     #!/bin/bash -i lookup "foo" 
  3. Defina a vairiável BASH_ENV quando você inicia seu script:

     BASH_ENV=$HOME/.bashrc /path/to/my/script 
  • linux: como alterair permanentemente e globalmente as variables ​​de ambiente
  • Como se pode definir o título de um terminal com o command 'tput'?
  • O que cria ~ / .bashrc
  • Cores CentOS em aplicativos php-cli
  • Como posso desativair CTRL + Z backgrounding em vim ou nano?
  • Como faço paira restaurair o bashrc padrão?
  • Use .bashrc sem quebrair sftp
  • Alterações em / etc / bashrc?