Pergunta

Eu estou tentando usar aliases em um shell bash não-interativo. Defini minhas aliases em ~/.bashrc e eu definir o BASH_ENV=~/startUpFile variável. O conteúdo do startUpFile são source ~/.bashrc.

Eu posso ver que meus aliases são reconhecidos, quando eu executar o comando alias. No entanto, se eu tentar usar um alias definido no ~/.bashrc, Bash podem não reconheceu. Dá-me o erro comando desconhecido.

Com o tcsh é muito fácil de fazer isso porque o arquivo ~/.cshrc é sempre ler.

Alguma idéia de como eu posso fazer isso com um shell bash?

Foi útil?

Solução

O shopt -s expand_aliases comando irá permitir a expansão alias no conchas não-interativas.

Outras dicas

.bashrc somente é processada por conchas interativos.

Além disso, aliases não são expandidas quando o shell não é interativa, a menos que a opção shell expand_aliases é definida usando shopt. A menos, claro, o modo POSIX é invocado chamando o shell com o nome sh vez de bash.

As pessoas que usam pseudônimos muito frequentemente fonte de sua .bashrc no final do seu perfil para que os aliases estão lá, mesmo para os reservatórios não-interativas. Isto pode não ser o melhor caminho, mas é bastante comum.

São coisas como esta que me levam a crer que no século 21 devemos abandonar shell scripts em favor de uma linguagem full-blown como Python. É muito mais previsível.

Você tem que

shopt -s expand_aliases

no arquivo apontado em sua BASH_ENV

Eu tinha problema semelhante, no final, eu descobri que ~ / .bashrc foi tudo que eu precisava.

No entanto, no Ubuntu, eu tinha que comentar a linha que pára o processamento ~ / .bashrc:

If not running interactively, don't do anything
[ -z "$PS1" ] && return
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top