shell中的变量

Shell环境变量详解与配置
本文介绍了Shell中的变量,包括预设的环境变量如PATH、HOME等,以及如何定义和使用用户自定义变量。详细讲解了变量命名规则、变量内容处理、变量作用域和持久化设置,还提到了系统环境变量和个人环境变量的配置文件位置。

变量

shell中预设的变量都是大写的。
变量就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据,可以使用echo命令显示变量的值。

echo $PWD
echo $PATH

另外可以使用env命令列出全部系统预设的系统环境变量,不同登录的用户列出的环境变量也不一样。
在这里插入图片描述
常见的环境变量有:
PATH : 决定shell将到哪些目录中寻找命令或程序;
HOME : 当前用户的主目录;
HISTSIZE : 历史记录数;
LOGNAME : 当前用户的登录名;
HOSTNAME : 主机的名称;
SHELL : 当前用户的shell类型;
LANG : 与语言相关的环境变量
MAIL : 当前用户的邮件存放目录;
PWD: 当前目录;

env命令显示的变量只是环境变量,可以使用set命令把系统预设的全部变量(包括用户自定义的变量)都显示出来。

用户自定义变量要注意的事项

1.等号前后不能出现空格,否则会出现报错;

等号前面是变量名,等号后面是变量的内容
$是引用符号,即引用当前变量
例如,定义以下变量

name=banana
echo $name

2.变量名只能由英文、数字以及下划线组成,并且不能以数字开头;
3.当变量内容带有特殊符号(如空格)时,需要加上单引号,⚠️若变量内容本身带有单引号,此时需要使用双引号;

name='banana apple'
var="your's"

4.当变量内容中需要用到其他命令运行结果则可以使用反引号;

myname=`pwd`
echo $myname

这段命令执行的结果就是当前路径。
5.变量内容可以累加其他变量的内容,需要加双引号,⚠️不能使用单引号;

name="$LOGNAME"banana

单引号与双引号的区别:用双引号时不会取消掉里面出现的特殊字符的本身作用,如$,而使用单引号里面的特殊字符全部失去它本身的作用。即双引号支持转义,例如:
在这里插入图片描述
但是,当变量中出现’\t’ '\n’时,若想在使用echo输出时实现这些字符的作用,可以使用-e选项,例如:
在这里插入图片描述

注意⚠️:echo $a 和echo "$a"都可以表示变量的输出,但使用双引号是更严谨的方式。另外,如果变量是多个字符串串联起来的,需要使用{}将变量内容括起来,避免与后面的其他字符混淆。

6.在shell中,用户自定义的变量只能在当前shell中生效,属于局部变量,若想要设置的变量一直生效,有以下两种情况:
1)要想系统内所有用户登录后都能使用该变量
需要在/etc/profile文件最末行加入 “export myvar=Amazing” 然后运行”source /etc/profile”就可以生效了。
2)只想让当前用户使用该变量
需要在用户主目录下的.bashrc文件最后一行加入“export myvar=Amazing” ,然后运行”source .bashrc”就可以生效了。

7.若在当前shell中运行bash命令,则会进入一个新的shell,这个shell就是原来shell的子shell,可以使用pstree指令查看。
在父shell中设定的变量,在子shell中不生效,若需要变量在子shell中生效,需要使用export指令,即在父shell中设定变量var=123后,执行export var命令,若export后面不加任何变量名,则父shell中所有的变量在子shell中都能生效。
8.若想取消变量名,输入unset myvar

shell中$+特殊符号的意义

  • $0 表示当前shell脚本的名称
  • $1 表示执行shell脚本时,后面的第一个变量
  • $2 表示执行shell脚本时,后面的第二个变量
  • $? 判断前一个指令是否执行正确,若正确,则返回0
  • $* 列出执行shell脚本时所有的参数
  • $# 列出执行shell脚本时参数的个数

系统环境变量与个人环境变量的配置文件

在linux中,变量一般保存在哪里呢?

系统级别的配置文件有以下两个:
1)/etc/profile : 这个文件预设了几个重要的变量,如PATH、LOGNAME、INPUTRC、HOSTNAME等
2)/etc/bashrc: 这个文件主要预设umask以及PS1,PS1就是我们在敲命令时,前面那串字符;
在这里插入图片描述
\h就是主机名,\u就是用户名,\W就是当前目录,$就是前面那个$。

个人环境变量的配置文件都是隐藏文件,有:
1).bash_profile :定义了用户的个性化路径与环境变量的文件名称。每个用户都可以使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅执行一次;
2).bashrc : 该文件包含专用于用户的shell的bash信息,当登录以及打开新的shell时,该文件被读取。
3).bash_history:记录历史命令
4).bash_logout : 当退出shell时,会执行该文件,可以把一些清理工作放在这个文件中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值