在声明变量后执行时默认为“未找到命令”

Hed*_*dge 1 unix bash macos

为什么下面的代码不起作用?

#!/bin/sh
PATH=$PWD/Info
defaults read $PATH
Run Code Online (Sandbox Code Playgroud)

每次我执行它我都会得到

./script: line 3: defaults: command not found

一旦我在一行中完成它就可以工作

defaults read $PWD/Info
Run Code Online (Sandbox Code Playgroud)

这样就好了。我只是好奇。

cho*_*oba 5

因为你正在改变$PATH,这是一个特殊的变量。shell 使用 PATH 来搜索可执行程序。defaults可能是其中之一,但是从 PATH 中删除其文件夹后,shell 无法再执行它。