如何在 `dash`(或 bash)shell 中设置 PATH 以便它不搜索任何目录?因为空 PATH 搜索当前目录

如何在 `dash`(或 bash)shell 中设置 PATH 以便它不搜索任何目录?因为空 PATH 搜索当前目录

短跑如果我将 设为PATH空字符串,它将在当前目录中搜索:

$ export PATH=
$ echo $PATH

$ emptyexe
$ /usr/bin/ls emptyexe
emptyexe
$ pwd
/home/ctor
$ cd ..
$ emptyexe
dash: 36: emptyexe: not found

我应该设置什么PATH才能保证不在任何目录中搜索,尤其是在当前目录中?

PATH还会搜索 Bash 中的当前目录,因此问题也适用于它。

这是在 Fedora 28 上(实际上是 Qubes 操作系统中的 AppVM):

$ rpm -qf `which dash`
dash-0.5.9-1.fc25.x86_64
$ rpm -qf `which bash`
bash-4.3.43-4.fc25.x86_64

答案1

例如$ export PATH=/dev/null应该这样做。

[ctor@dom0 ~]$ dash
$ echo 'echo meh' > nonemptyexe
$ /usr/bin/chmod a+x ./nonemptyexe
$ nonemptyexe
dash: 3: nonemptyexe: not found
$ ./nonemptyexe
meh
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/ctor/.local/bin:/home/ctor/bin
$ export PATH=/dev/null
$ nonemptyexe
dash: 7: nonemptyexe: not found
$ ./nonemptyexe
meh
$ echo $PATH
/dev/null
$ export PATH=""
$ echo $PATH

$ nonemptyexe
meh
$ ./nonemptyexe
meh
$ 

相关内容