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
的另一个版本。谢谢。当你提到“路径”这个词时,我意识到了解决问题的一个简单方法。