在短跑如果我将 设为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
$