我想在运行命令行程序时默认传递它。
myprog --foo=bar
我能想到的解决方案是将自定义的“myprog”包装器添加到我的“bin”文件夹中
#! /bin/sh
/usr/bin/myprog --foo=bar $@
好处是,由于我设置了系统,所以 bin 文件夹位于交互式 shell 和 GUI 应用程序的 PATH 中,因此从任何地方调用 myprog 将默认传递 --foo 标志,包括如果我从应用程序运行 myprog菜单。
但是,我不喜欢在包装脚本中使用绝对路径/usr/bin/myprog
(如果不这样做,它会进入无限循环)。有更好的方法吗?
答案1
你可以用alias
它。从man sh
:
别名 别名是使用 alias(1) 内置命令设置的名称和相应的值。每当保留字可能出现时(见上文),在检查保留字后,shell 会检查该字以查看它是否与别名匹配。如果是,它将在输入流中用它的值替换它。例如,如果有一个名为“lf”的别名,其值为“ls -F”,则输入:
lf foobar ⟨return⟩
would become
ls -F foobar ⟨return⟩
别名为天真的用户提供了一种创建命令简写的便捷方法,而无需学习如何创建带参数的函数。它们还可以用来创建词汇上晦涩的代码。不鼓励这种使用。