如何通过可执行文件使用别名?

How to use an alias by an executable?

当 运行 宁 terraform-inventory 可执行文件时,在后台它 运行 另一个名为 terraform 的可执行文件。我希望它使用别名和 运行 terraformX 代替。因为我希望原始 terraform 可执行文件保持不变,所以我添加了 terraformX。因此我无法创建指向 terraformX 的符号链接并将其命名为 terraformterraformXterraform 的另一个版本。

别名命令:

alias terraform='terraformX'

您可以为脚本启用别名扩展:

shopt -s expand_aliases

但是,这不是脚本,可执行文件不会扩展别名。有没有办法让它扩展别名?

terraform-inventory 是这个项目的可执行文件:https://github.com/adammck/terraform-inventory.
terraform 是来自该网站的可执行文件:https://www.terraform.io/docs/commands/index.html

一种方法是修改terraform-inventory的源代码,让它执行terraformX而不是terraform。然后将terraform-inventory的源代码编译成可执行文件。

有点远射

这样做

展开别名并接受命令说你的命令是

"terraform --print this"

现在写程序

int main( int ac, char **av )
{
   return system( "terraform --print this" ); // or whatever the expanded alias
}

编译并赋予它与你的别名相同的名称,将它复制到你的 PATH

临时修改 PATH 环境变量而不是别名会有帮助。关键是删除 terraform 可执行文件的路径并将 terraformX 可执行文件放在不同的位置(然后 terraformX 可以命名为 terraform 或使用名称创建的符号链接 terraform).

运行:

which terraform

输出:

/usr/bin/terraform

运行:

export PATH=~/:/bin/
mv terraformX ~/terraform
which terraform

输出:

~/terraform

现在 运行ning terraform-inventory --list 将 运行 terraform state pull 在后台使用 ~/terraform 而不是 /usr/bin/terraform