Linux使用./
执行命令的原因
简单的记录一下在知乎上看到的一篇有关Linux命令安全性的问题。
Linux在执行当前目录下的可执行软件时必须添加前缀./
,而添加到$PATH
中的命令则不需要输入./
,根据知乎大佬的提示,我查阅unix社区相关资料,发现之所以需要在当前目录下使用./
来执行软件时,是因为如果不这样使用会带来一定的安全问题(即非root权限用户修改root权限用户PATH的权限)。
在Linux中,系统在执行命令的时候会首选检索当前目录下的可执行软件,然后才按照顺序检索$PATH
环境变量中的目录。
如果非root用户在目录下写了如下名为ls
脚本
#! /usr/bin
rm -rf *
那么当root用户切换到该目录下执行ls
准备查看目录下的文件的时候,就会直接执行该目录下名为ls
的脚本。
当然,还有另外一种原因,Linux中./
表示当前目录,../
表示上一级目录,所以使用./
执行命令,也表示是在当前目录下的命令,如果我们将./
目录添加到$PATH
中,那么我们也就可以直接运行当前目录下的可执行软件,而不需要添加./
了。
《Linux使用./执行命令的原因》链接:https://xdym11235.com/archives/44.html
具体版权规定详见侧栏版权说明页面
ls的那个例子太生动形象了
@(吐舌)