1

次の問題があります: MKS Toolkitを使用して現在実行している多くのテスト スクリプトがあります。これらのスクリプトはmingw シェル (msys)aliasを使用して実行できましたが、bash ではなく MKS Toolkit に組み込まれている一部の es を使用するスクリプトが他にもあります。

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

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

どんな考えやアイデアでも大歓迎です。

ありがとう

4

2 に答える 2

2

/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

これにより、bashにインタラクティブシェルを実行するように指示されます(したがって、script.shを実行する前に、エイリアスを展開し、エイリアススクリプトを入手します)。

于 2012-05-22T11:48:37.560 に答える
0

この答えは私に解決策を与えました。BASH_ENV実行前に変数を定義する必要があります

bash script_name.sh

BASH_ENV は、シェルの環境を設定するスクリプトを指します。私の場合、es と必要な関数をエクスポートするにaliasは、スクリプトは次のようになります。

shopt -s expand_aliases

alias my_alias="echo my_alias"

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

export -f MyFunction
于 2012-05-22T12:15:24.240 に答える