windows - 外壳问题 : alias doesn't expand

标签 windows bash msys mks

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

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

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

欢迎提出任何想法。

谢谢

最佳答案

/etc/profile 仅用于登录 shell。如果你想在你的脚本中使用别名,你应该把它们放在一个单独的文件中,并将它们作为源代码放入需要它们的脚本中。例如:

别名.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 执行一个交互式 shell(从而在执行 script.sh 之前扩展别名并获取我们的别名脚本)。

关于windows - 外壳问题 : alias doesn't expand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700048/

相关文章:

linux - 如何在不使用服务器端缓存的情况下调用 cURL?

linux - sed 如何删除文件中的前 17 行和后 8 行

visual-c++ - 使用 MSYS 在 Windows 7 中构建 nginx

c - 配置 libpng : "zlib not installed" 时出错

c++ - poco c++ 库静态链接与/MT 错误

windows - 为什么要初始化一个对象为空

ruby - 如何搜索二进制文件并用 Ruby 替换字符串?

windows - 使用 WinForm 时激活上下文丢失?

windows - cygwin + console2 : running cygwin bash with startup dir

cmake - 如何在MSYS2中安装配置 'cmake'?