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

Bash 如何通过可执行文件使用别名?,bash,alias,executable,terraform,ansible-inventory,Bash,Alias,Executable,Terraform,Ansible Inventory,当运行terraform inventoryexecutable时,它在后台运行另一个名为terraform的可执行文件。我希望它跟随一个别名并运行terraformX。因为我希望原始的terraform可执行文件保持不变,所以我添加了terraformX。因此,我无法创建指向terraformX的符号链接并将其命名为terraformterraformX是terraform的另一个版本 别名命令: alias terraform='terraformX' 您可以通过以下方式为脚本启用别名扩展

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

别名命令:

alias terraform='terraformX'
您可以通过以下方式为脚本启用别名扩展:

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

terraform inventory
是此项目的可执行文件:。

terraform
是本网站的可执行文件:

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

这有点遥不可及

这样做

展开别名并接受命令,表示您的命令为

"terraform --print this"
现在编写一个程序

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

编译并将其命名为与别名相同的名称,将其复制到路径

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

运行:

输出:

/usr/bin/terraform
~/terraform
运行:

输出:

/usr/bin/terraform
~/terraform

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

您能详细说明一下这里的可执行文件是什么吗?二进制的呢?您的任何可执行文件、二进制文件或命令是shell脚本吗?另外,它究竟如何“调用”另一个命令?重新表述了这个问题。提供了一种解决问题的方法。仍然有兴趣知道一个可执行文件是否可以使用别名。terraformX指向的是
terraformX
的另一个版本。谢谢。当你提到“路径”这个词时,我意识到了解决问题的一个简单方法。