質問

次のような問題があります。 MKS Toolkit を使用して現在実行されているテストスクリプトがたくさんあります。 mingwシェル(MSYS)を使用してそれらのスクリプトを実行することができましたが、aliasesを利用する他のスクリプトもあります。それは内蔵のMKSツールキットであり、Bashではなくてもありません。

問題は、スクリプトを使用して自動的でなく、それらのスクリプトを変更したいという問題です。つまり、それらのエイリアスを定義して使用する必要があります。MSYSシェルの「/ etc / profile」ファイルにエイリアスを定義しましたが、成功せずにまた、shopt -s expand_aliases( "/ etc / profile")を使用しようとしましたが、それはどちらも機能しません。

誰かがこれがどのように行われるかについてのアイデアを共有できます。既存のスクリプトが同じままである必要があることに注意してください。

あらゆる考えやアイデアは大歓迎です。

ありがとう

役に立ちましたか?

解決 2

この答えにその解決策を与えました。

を実行する前に変数BASH_ENVの定義を含みます。
bash script_name.sh
.

bash_envはシェルの環境を設定するスクリプトを指します。マイケースでは、aliasesをエクスポートするため、およびスクリプトが必要な機能もこのようになります。

shopt -s expand_aliases

alias my_alias="echo my_alias"

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

export -f MyFunction
.

他のヒント

/etc/profileはログインシェルにのみ供給されます。スクリプト内のエイリアスを必要としている場合は、それらを別のファイルに入れて、それらを必要とするスクリプトにそれらをソース化する必要があります。例えば:

aliases.sh

alias walrus="echo coo coo cah joo"
.

script.sh

#!/bin/bash

shopt -s expand_aliases
. aliases.sh

walrus
.

、その後

$ ./script.sh
coo coo cah joo
.

それはおそらくそれをするための最も合理的な方法です。でスクリプトを変更しないと主張した場合は、次のように間接的に実行することができます。

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

は、Interactiveシェルを実行するようにBashに伝えます(したがって、script.shを実行する前にエイリアスとエイリアススクリプトを展開する)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top