我使用Bash作为我的交互式外壳,我想知道是否有一种简单的方法可以使Bash在共享相同名称的情况下运行系统命令而不是外壳内置命令。
例如,使用系统kill
(from util-linux
)打印指定进程的进程ID(pid),而不发送信号:
$ /bin/kill -p httpd
2617
...
在不指定系统命令的完整路径的情况下,将使用Bash内置函数代替系统命令。该kill
内建不具备-p
这样的命令失败选项:
$ kill -p httpd
bash: kill: p: invalid signal specification
我尝试了使bash使用外部`time`命令而不是内置的shell列出的答案,但是它们中的大多数只能使用,因为time
实际上是一个shell 关键字 –而不是内置的shell。
除了暂时禁用内置的Bash之外enable -n kill
,到目前为止,我所看到的最佳解决方案是使用:
$(which kill) -p httpd
是否有其他更简单的方式(较少的输入操作)来执行外部命令而不是内置的Shell?
请注意,这kill
只是一个示例,我想要一个通用的解决方案,类似于使用command
内置前缀防止运行与外部命令同名的函数的方式。在大多数情况下,我通常更喜欢使用内置版本,因为它节省了创建新进程的时间,并且有时内置功能具有外部命令所没有的功能。
which kill
在反引号(不能把他们在评论)是略短。