🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
一. 命令在Linux中的执行分为4步: 第一步:判断路径 判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话直接执行。 第二步:检查别名 Linux系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。可以用alias命令来创建一个属于自己的别名,格式为“alias 别名=命令”。如果想取消一个命令别名,则用unalias格式为“unalias 别名”。 第三步:判断内外部 Bash解释器会判断用户输入的命令是内部命令还是外部命令。内部命令是解释器内部的命令,会被直接执行;但是用户在多数时间输入的命令都是外部命令,这些命令交给步骤四继续处理。 可以使用“type 命令名称”来判断用户输入的命令是内部命令还是外部命令。 第四步:路径查找文件 系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫做PATH,可以简单的把它理解为“解释器的小助手”,作用是告诉bash解释器待执行的命令可能存放的位置,然后Bash解释器就会乖乖地在这些位置中逐个查找。PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找。 注意:不要将当前目录(.)加入到PATH中!! 因为,虽然当前目录是可以加到PATH中的,但是,这样做是不安全的。例如,当黑客在比较常用的公共目录中如/tmp中存放了一个与ls或cd命令同名的木马文件,而用户又恰巧在公共目录中执行了这些命令,那就GG了。 所以,作为运维人员,当接手一个新的Linux系统后,首先,应该看一下PATH变量中有无可疑的目录。 二. 关于PATH的作用: PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令,而PATH的值恰恰就是/bin:/sbin:/usr/bin:……。其中的冒号使目录与目录之间隔开。 关于新增自定义路径: 现在假设你新安装了一个命令在/usr/locar/new/bin下面,而你又想像ls一样在任何地方都使用这个命令,你就需要修改环境变量PATH了,准确的说就是给PATH增加一个值/usr/locar/new/bin。你只需要一行bash命令export PATH=$PATH:/usr/locar/new/bin。这条命令的意思太清楚不过了,使PATH自增:/usr/locar/new/bin,既PATH=PATH+":/usr/locar/new/bin";通常的做法是把这行bash命令写到/root/.bashrc的末尾,然后当你重新登陆LINUX的时候(应该是linux启动时就会执行这个文件),新的默认路径就添加进去了。当然这里你直接用source /root/.bashrc执行这个文件重新登陆了。你可以用echo $PATH命令查看PATH的值。 关于删除自定义路径: 当某天你发现你新增的路径/usr/locar/new/bin已经没用了的话,你可以修改/root/.bashrc文件里面你新增的路径。或者你可以修改/etc/profile文件删除你不需要的路径. vim /etc/profile source /etc/profile