1

我有以下问题:我有许多当前正在使用MKS Toolkit运行的测试脚本。我们设法使用mingw shell (msys)运行这些脚本,但还有其他脚本使用了一些alias内置的 MKS Toolkit 而不是 bash 的 es。

问题是没有人愿意更改这些脚本,甚至不使用脚本自动更改。这意味着我应该定义和使用这些别名。我尝试在 msys shell 的“/etc/profile”文件中定义别名,但没有任何成功。我也尝试使用shopt -s expand_aliases(在“/etc/profile”中),但这也不起作用。

有人可以分享一个关于如何做到这一点的想法。请注意,现有脚本必须保持不变。

欢迎任何想法或想法。

谢谢

4

2 回答 2

2

/etc/profile仅用于登录 shell 。如果您想要脚本中的别名,您应该将它们放在一个单独的文件中并将它们源到需要它们的脚本中。例如:

别名.sh

alias walrus="echo coo coo cah joo"

脚本.sh

#!/bin/bash

shopt -s expand_aliases
. aliases.sh

walrus

进而

$ ./script.sh
coo coo cah joo

这可能是最合理的做法。如果您坚持根本不更改脚本那么您也许可以像这样间接执行它们:

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

这将告诉 bash 执行一个交互式 shell(从而在执行 script.sh 之前扩展别名并获取我们的别名脚本)。

于 2012-05-22T11:48:37.560 回答
0

这个答案给了我解决方案。它涉及BASH_ENV在执行之前定义变量

bash script_name.sh

BASH_ENV 将指向设置 shell 环境的脚本。就我而言,要导出aliases 以及脚本所需的函数,如下所示:

shopt -s expand_aliases

alias my_alias="echo my_alias"

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

export -f MyFunction
于 2012-05-22T12:15:24.240 回答