第七章 命令解释器-shell
7.1 什么是shell
shell:壳,命令解释器,负责解析用户输入的命令。
命令分两类:
内置命令 (shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
type 命令查看命令是file、alias还是builtin
type -a 列出当前命令可以如何执行
type -t 仅列出命令按照哪种方式执行
系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量PATH中。
在众多环境变量里面有一个环境变量叫做PATH,当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
7.2 shell中的变量
变量就是让某一个特定字符串代表不固定的内容,变量可分为两类:环境变量(全局变量)和普通变量(局部变量)
1、普通变量
也可称为局部变量,只能在创建它们的Shell函数或Shell脚本中使用,普通变量一般由开发者在开发脚本程序时创建。
设置变量:
变量命名的规则: 只能使用数字、字母和下划线,且不能用数字开头
变量名和变量值用“=”连接
等号两边不能有空格符
变量的赋值,一般有五种写法:
name=value
name1='value'
name_2="value"
_name_3=`cmd` 键盘左上角反引号` `
_na_me_4=$(cmd) 键盘左上角反引号` `
[root@yang test]# vim var.sh
[root@yang test]# chmod +x var.sh #给一个x权限
2、环境变量
环境变量也可称为全局变量,可以在创建它们的Shell 及其派生出来的任意子进程 Shell 中使用,环境变量又可分为自定义环境变量和 bash 内置的环境变量。
(1)bash内置的环境变量:用于定义 Shell 的运行环境,保证 Shell 命令的正确执行,Shell 通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等
(2)自定义环境变量:自定义环境变量可以在命令行中设置和创建,但用户退出命令时这些变量值就会
丢失。如果希望永久保存环境变量,可在用户家目录下的 .bash_profile 或 .bashrc 文件中,或者全
局配置 /etc/bashrc 或 /etc/profile 文件中定义,在将环境变量放入上述的文件中后,每次用户登
录时这些变量都将被初始化。
按照系统规范,所有环境变量的名字均采用大写形式。
在命令行中设置环境变量
export 变量名=value
变量名=value ; export 变量名
declare -x 变量名=value
在文件中设置环境变量(永久生效)
root用户的环境变量配置文件:
[root@www ~]$ ls /root/.bashrc # 推荐在此文件中优先设置
/root/.bashrc
[root@www ~]$ ls /root/.bash_profile
/root/.bash_profile
所有用户生效的环境变量配置文件:
[root@www ~]$ll /etc/profile
[root@www ~]$ll /etc/bashrc
[root@www ~]$ll /etc/profile.d/ 若要在登陆后初始化或显示加载内容,则把脚本文件放在
`/etc/profile.d/` 下即可(无需加载执行权限)
示例:设置生产环境下的Java环境变量,将以下内容写入以上任意一个文件即可。
export JAVA_HOME=/application/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export RESIN=/applaction/resin
7.3 Linux 中的特殊符号
7.4 命令别名
[root@yang test]# vim /etc/bashrc 针对所有
[root@yang test]# vim ~/.bashrc 只针对当前用户
别名是命令的快捷方式。对于需要经常执行,并需要很长时间输入的长命令创建快捷方式很有用。
语法: alias 别名=’原命令 [选项]…… [参数]……’
在命令行中使用alias命令设置的别名仅在该次登入有效,如果重新开启一个 Shell,或者重新登录
系统,则这些alias将无法使用。
在linux中提供alias永久化的方法:
(1)若要让某个用户使用该别名,则把别名加在 ~/.bash_profile 或 ~/.bashrc 中。然后 source
~/.bashrc 或者 source ~/.bash_profile 。
(2)若要让每一位用户都使用该别名,则把别名加在 /etc/bashrc 或者 /etc/profile 中,然后
source /etc/bashrc 或者 source /etc/profile
7.5 命令历史
history 命令可以查阅命令历史记录 ,也可在命令行利用向上或向下光标键来进行查询。
语法: history [选项] [参数]
命令行中的其他快捷键:
#查看设置的别名
[root@node13 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
……
#删除别名:
[root@node13 ~]#unalias 别名
选项:
number:显示最近number条命令历史
-c:清空当前历史命令
-a [file]:后面没跟文件时,默认将缓冲区中历史命令写入~/.bash_history中
-r [file]:将历史命令文件中的命令读入当前历史命令缓冲区中
-w:将当前历史命令缓冲区命令写入历史命令文件中;
命令行中的其他快捷键: