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

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

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

欢迎任何想法或想法。

谢谢

有帮助吗?

解决方案 2

这个答案 给了我解决方案。它涉及定义变量 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

其他提示

/etc/profile 仅用于登录 shell。如果您希望在脚本中使用别名,则应该将它们放在单独的文件中,并将它们添加到需要它们的脚本中。例如:

别名.sh:

alias walrus="echo coo coo cah joo"

脚本文件:

#!/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 之前扩展别名并获取别名脚本)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top