环境变量
变量是计算机系统用于保存可变值的数据类型。在Linux系统中,变量名称一般都是大写的,这是一种约定俗成的规范。我们可以直接通过变量名称来提取到对应的变量值。Linux系统中的环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录、邮件存放位置等。
环境变量配置位于 ~/.bash_profile
$ vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
export PATH
Linux系统中最重要的10个环境变量:
- HOME 用户的主目录(即家目录)
- SHELL 用户在使用的Shell解释器名称
- HISTSIZE 输出的历史命令记录条数
- HISTFILESIZE 保存的历史命令记录条数
- MAIL 邮件保存路径
- LANG 系统语言、语系名称
- RANDOM 生成一个随机数字
- PS1 Bash解释器的提示符
- PATH 定义解释器搜索用户执行命令的路径
- EDITOR 用户默认的文本编辑器
PATH
PATH 不同的环境变量使用 :
分割。
执行source命令使其生效:
source ~/.bash_profile
也可直接对PATH变量进行设置
$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
PATH=$PATH:/root/bin
$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
这里有比较经典的问题:“为什么不能将当前目录(.)添加到PATH中呢? ” 原因是,尽管可以将当前目录(.)添加到PATH变量中,从而在某些情况下可以让用户免去输入命令所在路径的麻烦。但是,如果黑客在比较常用的公共目录/tmp中存放了一个与ls或cd命令同名的木马文件,而用户又恰巧在公共目录中执行了这些命令,那么就极有可能中招了。
自定义环境变量
其实变量是由固定的变量名与用户或系统设置的变量值两部分组成的,我们完全可以自行创建变量,来满足工作需求。例如设置一个名称为WORKDIR的变量,方便用户更轻松地进入一个层次较深的目录:
mkdir /home/workdir
WORKDIR=/home/workdir
cd $WORKDIR
$ pwd
/home/workdir
但是,这样的变量不具有全局性,作用范围也有限,默认情况下不能被其他用户使用。如果工作需要,可以使用export命令将其提升为全局变量,这样其他用户也就可以使用它了:
[root@linuxprobe workdir]# su linuxprobe
Last login: Fri Mar 20 20:52:10 CST 2017 on pts/0
[linuxprobe@linuxprobe ~]$ cd $WORKDIR
[linuxprobe@linuxprobe ~]$ echo $WORKDIR
[linuxprobe@linuxprobe ~]$ exit
[root@linuxprobe ~]# export WORKDIR
[root@linuxprobe ~]# su linuxprobe
Last login: Fri Mar 20 21:52:10 CST 2017 on pts/0
[linuxprobe@linuxprobe ~]$ cd $WORKDIR
[linuxprobe@linuxprobe workdir]$ pwd
/home/workdir
主机名
当使用多台主机的时候, 如果使用默认主机名, 将很难区分其名字, 可以使用以下命令进行重命名主机名:
hostname node1
以上修改, 将在服务器不重启的条件下生效, 若服务器重启将恢复默认主机名。
或者修改配置文件 /etc/hostname
, 配置将在重启服务器后生效:
$ vim /etc/hostname
node1
命令别名
命令别名配置位于 ~/.bashrc
$ vim ~/.bashrc
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
alias saferm='saferm.sh'
执行source命令使其生效:
source ~/.bashrc
可以直接用 alias
命令来创建一个属于自己的命令别名,格式为 alias 别名=命令
, 直接使用 alias 别名
可以查看当前别名绑定的命令。若要取消一个命令别名,则是用 unalias
命令,格式为 unalias 别名
。
创建一个别名:
alias netstatl='netstat -ntlp'
netstatl
我们之前在使用rm命令删除文件时,Linux系统都会要求我们再确认是否执行删除操作,其实这就是Linux系统为了防止用户误删除文件而特意设置的rm别名命令,接下来我们把它取消掉:
$ ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
$ rm anaconda-ks.cfg
rm: remove regular file 'anaconda-ks.cfg'? y
$ alias rm
alias rm='rm -i'
unalias rm
rm initial-setup-ks.cfg
hosts
hosts 文件位于 /etc/hosts
$ vim /etc/hosts
# 单个虚拟主机
127.0.0.1 localhost
# 多个虚拟主机
192.168.0.15 node1 node2 node3
查看系统信息
uname -a # 显示系统名、节点名称、操作系统的发行版号、操作系统版本、运行系统的机器 ID 号
arch # 显示机器的处理器架构
iconv -l # 列出已知的编码
cat /proc/cpuinfo # 显示CPU info的信息
cat /proc/interrupts # 显示中断
cat /proc/meminfo # 校验内存使用
cat /proc/swaps # 显示哪些swap被使用
cat /proc/version # 显示内核的版本
cat /proc/net/dev # 显示网络适配器及统计
cat /proc/mounts # 显示已加载的文件系统
cat /etc/issue # 查看系统版本
$ cat /etc/redhat-release # 查看内核信息(红帽系)
CentOS Linux release 7.6.1810 (Core)