Windows 外壳问题:别名不';t扩展
我有以下问题: 我有许多测试脚本,目前正在使用运行。我们设法使用运行了这些脚本,但是还有其他脚本使用了一些内置MKS工具包而不是bash中的Windows 外壳问题:别名不';t扩展,windows,bash,msys,mks,Windows,Bash,Msys,Mks,我有以下问题: 我有许多测试脚本,目前正在使用运行。我们设法使用运行了这些脚本,但是还有其他脚本使用了一些内置MKS工具包而不是bash中的aliases 问题是没有人想更改这些脚本,甚至不想使用脚本自动更改。这意味着我应该定义和使用这些别名。我尝试在msys shell的“/etc/profile”文件中定义别名,但没有成功。我还尝试使用shopt-s expand\u别名(在“/etc/profile”中),但这也不起作用 有人能分享一下如何做到这一点的想法吗。请注意,现有脚本必须保持不变
alias
es
问题是没有人想更改这些脚本,甚至不想使用脚本自动更改。这意味着我应该定义和使用这些别名。我尝试在msys shell的“/etc/profile”文件中定义别名,但没有成功。我还尝试使用shopt-s expand\u别名
(在“/etc/profile”中),但这也不起作用
有人能分享一下如何做到这一点的想法吗。请注意,现有脚本必须保持不变
欢迎有任何想法或想法
谢谢该
/etc/profile
仅用于登录shell。如果希望在脚本中使用别名,应将其放在单独的文件中,并将其源代码放在需要它们的脚本中。例如:
别名。sh:
alias walrus="echo coo coo cah joo"
#!/bin/bash
shopt -s expand_aliases
. aliases.sh
walrus
script.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之前展开别名并生成别名脚本)。给出了解决方案。它包括在执行之前定义变量BASH_ENV
bash script_name.sh
BASH_ENV将指向设置shell环境的脚本。在我的例子中,要导出别名
es以及所需的函数,脚本如下所示:
shopt -s expand_aliases
alias my_alias="echo my_alias"
function MyFunction {
echo "MyFunction(DUMB):" $*
}
export -f MyFunction
您确定运行脚本的用户来自其
.profile
?choroba Yes。我放了一个echo
,它就工作了。我想你的答案和我的解决方案类似。我错误地浏览了bash文档,之后又浏览了stackoverflow归档。