linux路径设置-linux必学小知识
今天介绍下linux路径的使用,这里的路径是命令搜索路径的简称。
在Linux上执行命令时,本来是需要命令的所在位置的绝对路径的,就像/usr/bin/passwd这样。
但是,对于经常使用的命令,如果每次都要输入绝对路径的话就非常麻烦了。
在Linux的shell中,执行某个命令时,用户不用输入命令的完整路径,直接输入命令后,系统会在特定的目录中查找这个命令,找到后执行。
这时,设置Shell在哪些目录中搜索命令的步骤就被称为路径设置,正确的应该是命令搜索路径的设置
为了设置路径,需要修改环境变量PATH,每个希望搜索的目录之间用:区分开。
设置方法就是用 [[16. 环境变量]] 介绍的export命令(export为shell脚本添加指定环境变量的方法),比如,想把/usr/sample这个路径加入到命令搜索路径中去的话,
在Linux中,当前目录并不在命令搜索路径中,因此,比如想执行当前目录下的hogehoge.cmd命令,必须要通过./hogehoge.cmd来执行。
虽然有些麻烦,但是把当前目录加入到命令搜索路径中的话,会带来一些安全问题,所以不建议把当前目录加入到PATH中。
首先,安全的大原则就是不要把多余的目录加到命令搜索目录中。而且,过多的目录加到命令搜索目录中的话,那么如果有2个目录中都有ps这个文件,用户输入ps时,究竟哪个ps会被执行呢?
这就会导致混乱。(实际上,会按PATH中定义的目录的顺序来搜索命令的,这2个目录谁在前面,就执行哪个目录中的ps。虽然如此,这种情况还是会给用户带来困扰)
刚刚说的如果把当前目录加入到 PATH 中会导致什么后果呢?
极端的情况下,几乎所有的目录都有可能变成当前目录(因为用户有可能进入任何一个目录)。这就导致几乎所有的目录都有可能称为命令搜索路径。
这样的情况下,不仅仅会带来混乱,如果某个目录下被放置了恶意程序,由于这个目录有可能在命令搜索路径中(当用户进入这个目录时),所以用户无意中执行这个恶意程序的机会会很高。
通常,一般用户能够进出哪些目录是被限制的,系统会保证这些目录不在 PATH 中,一旦用户可以进出的这些目录被加入到 PATH 中,那么恶意程序执行时所带来的风险也会大大增加。
命令搜索路径不能为了使用方便而任意指定,首先要确保目录的安全性,然后再考虑是否追加到命令搜索路径中。