Pergunta

Eu tenho o seguinte problema:Tenho muitos scripts de teste em execução atualmente usando Kit de ferramentas MKS.Conseguimos executar esses scripts usando o shell mingw (msys) mas existem outros scripts que fazem uso de alguns aliases que são integrados ao MKS Toolkit e não ao bash.

O problema é que ninguém quer alterar esses scripts, nem mesmo automaticamente usando um script.Isso significa que devo definir e usar esses aliases.Tentei definir os aliases no arquivo "/etc/profile" do shell msys, mas sem sucesso.Eu também tentei usar shopt -s expand_aliases (em "/etc/profile") mas isso também não funciona.

Alguém poderia compartilhar uma idéia de como isso poderia ser feito.Lembre-se de que os scripts existentes deverão permanecer os mesmos.

Quaisquer pensamentos ou ideias são bem-vindos.

Obrigado

Foi útil?

Solução 2

Esta resposta me deu a solução.Envolve definir a variável BASH_ENV antes de executar

bash script_name.sh

BASH_ENV apontará para um script que define o ambiente do shell.No meu caso, para exportar o aliases e também as funções necessárias, o script fica assim:

shopt -s expand_aliases

alias my_alias="echo my_alias"

function MyFunction {
    echo "MyFunction(DUMB):" $* 
}

export -f MyFunction

Outras dicas

O /etc/profile é fornecido apenas para shells de login.Se quiser os aliases em seu script, você deve colocá-los em um arquivo separado e colocá-los no(s) script(s) que precisa(m) deles.Por exemplo:

aliases.sh:

alias walrus="echo coo coo cah joo"

script.sh:

#!/bin/bash

shopt -s expand_aliases
. aliases.sh

walrus

e então

$ ./script.sh
coo coo cah joo

Essa é provavelmente a maneira mais razoável de fazer isso.Se você insiste em não alterar os scripts de forma alguma, então você poderá conseguir executá-los indiretamente, como:

bash --rcfile aliases.sh -i script.sh

Isso dirá ao bash para executar um shell interativo (e, assim, expandir os aliases e fornecer nosso script de aliases antes de executar o script.sh).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top