shell变量学习笔记

shell相关文件

# 查看系统支持的shell
cat /etc/shells
# 查看历史命令,每次登录注销后,会被保存在此文件中,注销前保存在内存中
cat ~/.bash_history
# 正常退出前会执行下面文件中的命令
cat ~/.bash_logout

shell命令行的编辑

ctrl+u #	删除光标之前的命令
ctrl+k #	删除光标之后的命令
ctrl+a #	光标移到命令行最前面
ctrl+e #	光标移到命令行最后面

shell的变量功能

变量的显示

echo $PATH
echo ${PATH}

变量的赋值

# 直接赋值1,不允许出现空格
myname=jiangxianqiang
# 直接赋值2,允许出现空格
myname="j x q"
# "$PATH"和'$PATH'的区别
a='$PATH'
b="$PATH"
echo ${a} --> $PATH
echo ${b} --> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# $(命令)或`命令`:可以在命令中使用其他命令,如
echo $(ls)
anaconda-ks.cfg pdump
# 取消变量
uset 变量名
# 从键盘给变量赋值
read [-pt] var
-p # 键盘输入前展示命令提示
-t # 等待键盘输入的超时时间
lread -p "please input " -t 30 myname

环境变量

变量和环境变量不是一个概念,父进程的变量子进程不能使用,父进程的环境变量子进程可以使用。

# 查看环境变量
env
export
# 普通变量转换成环境变量
export myname
env | grep myname -> myname=jiangxq

常见的环境变量

变量名描述
HOME用户的根目录
HISTSIZE历史命令最大数目
MAIL邮件相关
PATH可执行文件查找的路径
LANG语系
RANDOM0~32767之间的随机数,随机数生成器/dev/random 0~9之间随机数:declare -i number=$RANDOM/32767*10;echo $number

shell自身变量

除了临时变量和环境变量,还有bash自身变量,可以通过set或declare命令查看,用env或export看不到。下面是部分bash变量的含义

# PS1 命令行提示符,表示命令行开头显示的字符串
set | grep PS1
PS1='[\[\e[31m\]\u@\[\e[36m\]\h \w\[\e[37m\]]\[\e[33m\]\$\[\e[m\]  '
\d: 显示日期
\H: 显示完整主机名
\h: 显示简化主机名
\t \T \A \@: 显示时间
\u: 显示账号名称
\v: 显示bash的版本
\w: 显示完整工作目录
\W: 显示简化工作目录
\#: 显示执行的第几个命令
\$: 显示提示符,root为#,非root为$

# $ 表示本shell的进程号,使用echo $$来查看
echo $$
25193

# ?表示上一条命令的返回结果,成功为0,失败则显示对应的错误码
echo $?
0

变量相关命令

read

read的作用是从键盘读取数值,赋值给变量,选项参数为:

read [-pt] var
-p # 键盘输入前展示命令提示
-t # 等待键盘输入的超时时间

使用举例:

read -p "please input " -t 30 myname
-> please input aaa
echo ${myname}
-aaa

declare

declare的作用是声明不通类型的变量。参数选项为:

declare [-aixr] var #变量/数组的声明或取消声明
# 不加选项,展示所有的变量
-a # 声明数组类型变量
-i # 声明整型变量
-x # 声明环境变量或将自定义变量转换成环境变量
-r # 声明只读变量
-p # 查看变量类型
+aixr # 取消变量的类型,取消的是变量的类型,而不是变量自身

使用举例

# 数组的声明和使用
decalre -a var 		#声明
arr[1]=1;arr[2]=2 	#赋值方式1
arr=(1 2 3 4 5)		#赋值方式2
echo ${arr[1]}		#访问方式1
echo ${arr[*]}		#访问方式2

#整型变量的声明和使用
declare -i xxxx=1	#声明
xxxx=${xxxx}+1		#操作
echo $xxxx			
2

#类型的取消
declare +i xxxx
xxxx=${xxxx}+1
echo $xxxx
2+1

变量的应用

# 进入内核模块目录
cd /lib/modules/$(uname -r)/kernel

变量文件加载的顺序

login shell:完整流程登录,需要输入账号密码

non-login shell:非完整流程登录,如直接执行bash

login shell读取的配置文件的流程:

  1. 首先读取/etc/profile: 全局环境变量配置文件,export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL;并且设置了umask.调用了外部配置文件/etc/profile.d/*.sh,作用是定义bash的外观、功能等,如:

    • /etc/profile.d/lang.sh,通过调用/etc/locale.conf,实现语系配置
    • /etc/profile.d/bash_completion.sh,通过调用/usr/share/bash-completion/completions/*下的配置文件,实现命令补全
  2. 然后读取/.bash_profile或/.bash_login或~/.profile: 个人环境变量配置文件,哪个有读哪个,读到一个便结束,bash_profile做了两个事情:

    • 读取~/.bashrc文件,.bashrc又去调用/etc/bashrc配置文件
    • 将HOME/bin加入到PATH中

non-login shell读取的配置文件,仅读取~/.bashrc

shell命令识别的顺序

  1. 从alias中寻找
  2. 从bash的内置命令中寻找
  3. 通过$PATH变量的顺序寻找

shell登陆页面信息自定义

  • /etc/issue:用于自定义tty方式登录页面显示

  • /etc/issue.net:用于telnet方式登录页面显示

  • /etc/motd:message of today,用于公告今天的注意事项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值