shell 获取家目录_Shell的特殊变量

特殊的shell变量

Linux——Shell脚本中自定义变量的应用(基础)2

除了用户自定定义的shell变量以外,还有一系列的特殊的变量——环境变量、位置变量、预定义变量。

一、特殊的变量

1.环境变量

环境变量指的是出于运行需要而由linux系统提前创建的一类变量,主要用于设置用户的工作环境,包括用户宿主目录、命令查找路径、用户当前目录、登录终端等。环境变量的值由linux系统自动维护,会随着用户状态的改变而改变。

使用env命令可以查看到当前工作环境下的环境变量,对于常见的一些环境变量应了解其各自的用途。例如,变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录,PATH表示命令搜索路径等。如下图:

2fd534ea94e0cb5baa4a74c158812d68.png

PARH变量用于设置可执行程序的默认搜索路径,当仅指定文件名称来执行命令程序时,linux系统将在PATH变量指定的目录范围查找对应的可执行文件,如果找不到则会提示"command not found"。

例如:firsh.sh脚本位于/root目录下,若希望能直接通过文件名称来运行脚本,可以修改PATH变量以添加搜索路径,或者将first.sh脚本复制到现有搜索路径中的某个文件夹下。如下图:

f534768a8dec9b1b1b702adc8200a70b.png

在linux系统中,环境变量的全局配置文件为/etc/profile,在此文件中定义的变量作用于所有用户。除此之外,每个用户还有自己的独立配置文件(~/.bash_profil)。若要长期变更或设置某个环境变量,应在上述文件中进行设置。例如,执行以下操作可以将记录的历史命令条数改为200条(默认为1000条),只针对root用户。如下图:

6ace4e75230b0182f8b12d0910f7f832.png

上述修改只有当root用户下次登录时才会生效。若希望立即生效,应手动修改环境变量,或者可以加载配置文件执行。如下图:

206eeec781e7d72d010d7c2ba4ee207b.png

2.位置变量

为了在使用shell脚本程序时,方便通过命令行为程序提供操作参数,bash引入了位置变量的概念。当执行命令操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。

位置变量也称为位置参数,使用$1、$2、$3....$9表示。例如,当执行命令行"ls -lh /boot/"时,其中第1个位置变量为"-lh",以"$1"表示;第2个位置变量为"/boot/",以"$2"表示。命令或脚本本身的名称使用"$0"表示,虽然$0与位置变量的格式相同,但是$0属于预定义变量而不是位置变量。

示例:下面是一个加法运算的小脚本sum.sh,用来计算两个整数的和。需要计算的两个整数在执行脚本时以位置变量的形式提供。如下图:

a96ac58fa18eb0e885dd7c10a1e68998.png

3.预定义变量

预定义变量是由bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用"$"符号和另一个符号组合表示,较常用的几个预定义变量的含义如下:

  • $#:表示命令中位置参数的个数
  • $*:表示所有位置参数的内容
  • $?:表示前一条命令执行后的返回状态,返回值为0表示执行正确,返回任何非0值均表示执行出现异常
  • $0:表示当前执行的脚本或程序的名称

示例:下面是一个备份操作的小脚本,用来打包命令行指定的多个文件或目录,并输入相关信息。其中,新建的压缩包文件名称中嵌入时间,通过"date +%F"命令来获取。如下图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值