强制sh shell使用外部函数而不是内置函数

wvmv3b1j  于 2023-03-13  发布在  Shell
关注(0)|答案(2)|浏览(202)

由于某些原因,我希望我的程序使用外部函数而不是内置的shell函数(例如echo)。程序调用system(),使用/bin/sh执行参数。
使用bash shell时,我已经知道enable -n <fnc>可以阻止shell使用内置函数,但是,我找不到sh shell的类似方法。
对于sh是否可以这样做?

ne5o7dgx

ne5o7dgx1#

要强制任何shell使用外部可执行文件而不是内置命令,只需通过path指定即可:

# Use whatever the shell defaults to
echo "Hello World"

# Always use the specified external binary
/bin/echo "Hello World"

POSIX 2.9.1中指定了此行为:
如果命令名包含至少一个斜杠,则 shell 应在单独的实用程序环境中执行该实用程序,其操作等同于调用execl()函数

pwuypxnk

pwuypxnk2#

related question中得到了回答:
在命令前面加上env

$ env echo "Hello"

env是一个独立的程序,它不能访问shell内置程序,例如echo,因此它将在命令路径中搜索echo

相关问题