1.Linux 系统执行命令的4个步骤

第 1 步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话则直接执行。
  第 2 步:Linux 系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。
  可以用alias 命令来创建一个属于自己的命令别名,格式为“alias 别名=命令”。若要取消一个命令别名,则是用unalias 命令,格式为“unalias 别名”。
  举例:使用rm 命令删除文件时,Linux 系统都会要求我们再确认是否执行删除操作,其实这就是Linux 系统为了防止用户误删除文件而特意设置的rm 别名命令,接下来我们把它取消掉:

[root@Centos test]# ll
total 12
-rw-r--r--. 1 root root 122 Aug 4 16:58 a.txt
-rw-r--r--. 1 root root 53 Aug 5 16:00 error.txt
-rw-r--r--. 1 root root 43 Aug 5 15:50 readme.txt
[root@Centos test]#
[root@Centos test]# rm readme.txt
rm: remove regular file ‘readme.txt’? y
[root@Centos test]#
[root@Centos test]# alias rm
alias rm='rm -i'
[root@Centos test]# unalias rm
[root@Centos test]#
[root@Centos test]# rm error.txt
[root@Centos test]# ll
total 4
-rw-r--r--. 1 root root 122 Aug 4 16:58 a.txt

第 3 步:Bash 解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤4 继续处理。可以使用“type 命令名称”来判断用户输入的命令是内部命令还是外部命令。

第 4 步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作PATH,可以简单地把它理解成是“解释器的小助手”,作用是告诉Bash 解释器待执行的命令可能存放的位置,然后Bash 解释器就会乖乖地在这些位置中逐个查找。PATH 是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash 解释器对Linux 命令的查找。

[root@Centos ~]# echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 
[root@Centos ~]# PATH=$PATH:/root/bin /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

这里有比较经典的问题:“为什么不能将当前目录(.)添加到PATH 中呢? ” 原因是,尽管可以将当前目录(.)添加到PATH 变量中,从而在某些情况下可以让用户免去输入命令所在路径的麻烦。但是,如果黑客在比较常用的公共目录/tmp 中存放了一个与ls 或cd 命令同名的木马文件,而用户又恰巧在公共目录中执行了这些命令,那么就极有可能中招了。所以,作为一名态度谨慎、有经验的运维人员,在接手了一台Linux 系统后一定会在执行命令前先检查PATH 变量中是否有可疑的目录

最重要的10 个环境变量

Linux 作为一个多用户多任务的操作系统,能够为每个用户提供独立的、合适的工作运行环境,因此,一个相同的变量会因为用户身份的不同而具有不同的值。

举例:查看HOME 变量在不同用户身份下都有哪些值

[root@Centos test]# echo $HOME
/root
[root@Centos test]# su - centos
Last login: Thu Jul 30 02:21:51 CST 2020 on :0
[centos@Centos ~]$ echo $HOME
/home/centos

实变量是由固定的变量名与用户或系统设置的变量值两部分组成的,我们完全可以自行创建变量,来满足工作需求。

举例:

[root@Centos test]# mkdir work
[root@Centos test]# WORKDIR=/root/test/work
[root@Centos test]# cd $WORKDIR
[root@Centos work]# pwd
/root/test/work  

但是,这样的变量不具有全局性,作用范围也有限,默认情况下不能被其他用户使用。如果工作需要,可以使用export 命令将其提升为全局变量,这样其他用户也就可以使用它了:

[root@Centos workdir]# su centos
[centos@Centos ~]$ cd $WORKDIR
[centos@Centos ~]$ pwd
/home/centos
[centos@Centos ~]$ exit
logout
[root@Centos work]# export WORKDIR
[root@Centos workdir]# su centos
[centos@Centos work]$ cd $WORKDIR
bash: cd: /root/test/work: Permission denied
[centos@Centos work]$ cd /root/test/work/
bash: cd: /root/test/work/: Permission denied

8. Linux重要的环境变量的更多相关文章

  1. linux配置java环境变量(详细)

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

  2. linux配置java环境变量

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  3. Linux里设置环境变量的方法(export PATH)

    1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下 export LD_LIBRARY_PATH ...

  4. [转]在Linux里设置环境变量的方法

    在Linux里设置环境变量的方法(export PATH) 一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量.例如我的mips-linux-gcc编译器在“/opt/a ...

  5. hadoop搭建杂记:Linux下JDK环境变量的设置(三种配置环境变量的方法)

    Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种 ...

  6. linux配置java环境变量(转)

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  7. linux配置java环境变量jdk jre(详细)【转】

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

  8. linux下配置环境变量方式

    linux下配置环境变量有多种方式,下面简述之 方式1.编辑 /etc/profile 文件,增加如下内容 JAVA_HOME=/usr/local/jdk1. export JAVA_HOME PA ...

  9. Linux中PATH环境变量的作用和使用方法

    关于PATH的作用:PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径.比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根 ...

  10. Linux Java Meven环境变量设置

    linux中的环境变量设置,可以在两个地方设置.他们分别是: /etc/profile  在这个文件下设置表示全局的,所有用户有效. 用户工作目录,用 ls -a查看,可以看到有一个.bash_pro ...

随机推荐

  1. 如何使用容器镜像服务 TCR 轻松实现容器 DevOps

    作者周明,腾讯云容器产品工程师.目前主要负责腾讯云TKE.TCR等产品控制台的相关研发工作. 概述 当你使用云厂商提供的容器服务部署业务服务后,是否对交付部署全链路的效率有更高的需求,例如实现基于容器 ...

  2. CSS-position 属性&元素脱离文档流引发父级边框塌陷问题

    CSS-position 属性 CSS 定位机制 CSS 有三种基本的定位机制:普通流.浮动(float)和绝对定位(position). 除非专门指定,否则所有框都在普通流中定位.也就是说,普通流中 ...

  3. ElasticSearch--一、使用场景以及对应软件配置安装

    废话不多说,直接来硬的!我在使用的时候使用的是mysql数据库. 一.ElasticSearch概念和使用场景 1.当我们需要搜索海量数据的时候,就可能会用到.以下使用的场景有哪些呢? 搜索海量数据 ...

  4. 解决黑群晖"抱歉,您所指定的页面不存在"-记一次黑群晖修复案例

    起因 搞了一个usb外接硬盘准备备份数,刚好看到群晖有个工具软件"USB Copy". 安装后设置拷贝docker文件夹,然后就悲剧了,nas主页抛出提示 一开始也是直接网上搜索标 ...

  5. 使用Spring中@Async注解实现异步调用

    异步调用? 在解释异步调用之前,我们先来看同步调用的定义:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕,继 ...

  6. exchangeNetwork

    泛洪(Flooding) 转发(Forwarding) 丢弃(Discarding) 交换机中有一个MAC地址表,里面存放了MAC地址与交换机的映射关系.MAC地址表也称为CAM(Content Ad ...

  7. C++语言基础——02数据的存取

    常量 常量是指在程序中使用的一些具体的数.字符.在程序运行过程中,其值不能更改.如123.1.23.'a'."abc".True等. 常量的定义 const 类型 常量名 = 常量 ...

  8. 微信小程序项目转换为uni-app项目

    一.它是谁? [miniprogram-to-uniapp]转换微信小程序"项目为uni-app项目.原则上混淆过的项目,也可以进转换,因为关键字丢失,不一定会完美. 二.它的原理是什么? ...

  9. 【C++】《Effective C++》第四章

    第四章 设计与声明 条款18:让接口容易被正确使用,不易被误用 请记住 好的接口很容易被正确使用,不容易被误用.你应该在你的所有接口中努力达到这些性质. "促进正确使用"的办法包括 ...

  10. GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?

    目录 ✍前言 本文提纲 版本约定 ✍正文 GMT:格林威治时间 凭什么格林威治作为标准时间? 地球自转 中国有哪几个时区? 美国有哪几个时区? GMT和Http协议的渊源 UTC:世界标准时间 UTC ...