MacOS 13终端执行shell脚本提示“command not found”求助
问题原因
sudo执行命令时会重置环境变量,其中的PATH不包含当前工作目录(.),所以即使你已经cd到脚本所在文件夹,直接输入writeimage.sh时,sudo无法在系统默认的PATH路径中找到该脚本,因此报错“command not found”。
解决办法
直接指定脚本的相对路径或绝对路径执行(最安全推荐的方式)
在sudo后加上./前缀明确指向当前目录的脚本:sudo ./writeimage.sh -d /dev/disk5s1 -i "motioneyeos-raspberrypi-20200606.img.xz"也可以使用脚本的绝对路径,例如你的脚本在
~/Downloads目录下:sudo ~/Downloads/writeimage.sh -d /dev/disk5s1 -i "motioneyeos-raspberrypi-20200606.img.xz"将脚本移动到系统PATH包含的目录中
比如复制脚本到/usr/local/bin(需要sudo权限),之后无需路径即可执行:sudo cp writeimage.sh /usr/local/bin/ sudo chmod 755 /usr/local/bin/writeimage.sh # 确保其他用户也能执行(可选)之后直接运行:
sudo writeimage.sh -d /dev/disk5s1 -i "motioneyeos-raspberrypi-20200606.img.xz"临时修改sudo的PATH(不推荐,存在安全风险)
编辑sudoers配置文件(必须用visudo命令),将当前目录添加到secure_path中,但这种方式可能导致恶意脚本被误执行,仅适合熟悉系统配置的用户操作。
内容的提问来源于stack exchange,提问作者Benice
相关产品推荐
相关产品推荐

