onewhite
(onewhite)
1
你是不是经常遇到在网上复制命令的时候粘贴到自己的机子上想要运行却提示command not found?
我也是,找了一大圈我终于找到了解决方案,只需要在zsh的配置文件中添加一个函数就好了
command_not_found_handler() {
if [ -x "./$1" ]; then
echo "执行本地程序: ./$1 ${@:2}"
./$1 "${@:2}"
return 0
else
echo "zsh: command not found: $1"
return 127
fi
}
把这个粘贴到zsh配置文件中,然后source一下,再次运行就少掉了每次运行都要添加./的烦恼了。
效果如下
哦对了,我是保证在我运行的目录下面是有这么一个二进制文件存在的
20 个赞
8620
(八六)
5
不用那么麻烦哦,
PATH="$PATH:./"
这条命令也能实现一样的效果。如果想要优先使用当前目录下的可执行程序,就写成
PATH="./:$PATH"
原理是,shell 在执行命令时会以冒号 :
为分隔符,在环境变量 $PATH
所指定的目录中依次寻找二进制程序。把当前目录 ./
加入 $PATH
中,就可以指引 shell 在当前目录下搜寻命令了
10 个赞
fordwa
(fordwa)
12
谢谢。在这之上一级还有么?就是不管换用哪个shell,都继续保持有效
horizonl
(Horizonl)
13
这个我就不知道了,不同shell的默认配置文件应该不是同一个吧。
这里说/etc/profile也可以配置环境变量,不知道是不是你要的
1 个赞
很早之前搜索过这个问题,解决方案是加入PATH,不过说是有安全风险,更多的不记得了,可以问个ai获取细节