-- Sandra Henry-stocker
变量通常看起来像 $var 这样,但它们也有 $1、$*、$? 和 $$ 这种形式。让我们来看看所有这些 $ 值可以告诉你什么。
有许多重要的值都存储在 Linux 系统中,我们称为“变量”,但实际上变量有几种类型,并且一些有趣的命令可以帮助你使用它们。在上一篇文章中,我们研究了以及它们定义在何处。在本文中,我们来看一看在命令行和脚本中使用的变量。
用户变量
虽然在命令行中设置变量非常容易,但是有一些有趣的技巧。要设置变量,你只需这样做:
$ myvar=11
$ myvar2="eleven"
要显示这些值,只需这样做:
$ echo$myvar
11
$ echo$myvar2
eleven
你也可以使用这些变量。例如,要递增一个数字变量,使用以下任意一个命令:
$ myvar=$((myvar+1))
$ echo$myvar
12
$ ((myvar=myvar+1))
$ echo$myvar
13
$ ((myvar+=1))
$ echo$myvar
14
$ ((myvar++))
$ echo$myvar
15
$ let "myvar=myvar+1"
$ echo$myvar
16
$ let "myvar+=1"
$ echo$myvar
17
$ let "myvar++"
$ echo$myvar
18
使用其中的一些,你可以增加一个变量的值。例如:
$ myvar0=0
$ ((myvar0++))
$ echo$myvar0
1
$ ((myvar0+=10))
$ echo$myvar0
11
通过这些选项,你可能会发现它们是容易记忆、使用方便的。
你也可以删除一个变量 – 这意味着没有定义它。
$ unsetmyvar
$ echo$myvar
另一个有趣的选项是,你可以设置一个变量并将其设为只读。换句话说,变量一旦设置为只读,它的值就不能改变(除非一些非常复杂的命令行魔法才可以)。这意味着你也不能删除它。
$ readonly myvar3=1
$ echo$myvar3
1
$ ((myvar3++))
-bash:myvar3:readonly variable
$ unsetmyvar3
-bash:unset:myvar3:cannot unset:readonly variable
你可以使用这些设置和递增选项中来赋值和 *** 作脚本中的变量,但也有一些非常有用的内部变量可以用于在脚本中。注意,你无法重新赋值或增加它们的值。
内部变量
在脚本中可以使用很多变量来计算参数并显示有关脚本本身的信息。
◈ $1、 $2、 $3 等表示脚本的第一个、第二个、第三个等参数。
◈ $# 表示参数的数量。
首先,修改Linux的环境变量PATH的语法是这样的(以把/root目录加入PATH环境变量为例):PATH="$PATH":/root,注意Linux的PATH环境变量各个路径之间是用英文冒号分割的(这点和Windows的PATH环境变量有所区别,Windows的PATH环境变量的路径之间用英文分号分割)。解释:"$PATH"这一部分代表原来的PATH环境变量的内容,因为PATH环境变量是如此重要,对PATH环境变量的修改都是在原PATH的基础上进行添加,所以用"$PATH"导入原PATH的内容,然后后面用英文冒号分割开,再加上/root这个新添加的内容。意思就是在原PATH内容的基础上添加/root这个路径(尽量在原PATH的内容基础上添加,不要去掉原PATH里面的任何内容)。
那对PATH环境变量的修改应该写在那个配置文件中呢?如果想让设置只对当前用户有效,可以在~/.bashrc文件中加入如下两行(还是以添加/root目录为例):
PATH="$PATH":/root
export PATH
添加完成后,如果想让设置马上生效,还需要执行这样一条命令:source ~/.bashrc。(否则你的设置只会在下次登录才生效)
如果想让修改对所有用户都有效,则需要把设置添加到/etc/profile这个配置文件中,添加的内容和在~/.bashrc中的一样。
环境变量(environment variables)一般是指在 *** 作系统中用来指定 *** 作系统运行环境的一些参数,这些参数会对系统行为产生影响。比如常用的PATH环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还会到PATH中指定的路径去找。你可以在终端使用printenv PATH/echo $PATH查看当前PATH变量的值。
Linux系统下修改/自定义环境变量的方法通常分为两类:临时修改和永久性修改。下面分别介绍两种修改环境变量的方法。在这里以修改linux系统下的PATH环境变量(该环境变量保存了linux系统下所有可执行的程序的目录,linux系统执行某个可执行程序时,会以该环境变量的值(路径)去寻找可执行的程序名)为例进行举例。
PATH环境变量:该环境变量保存了linux系统下所有可执行的程序的目录,linux系统执行某个可执行程序时,会以该环境变量的值(路径)去寻找可执行的程序名,如果找到,则可以执行,如果找不到则会提示:无法找到××命令的错误。
1、临时修改/自定义环境变量
(1)临时自定义环境变量。
注意,系统默认的环境变量名称一般为大写,自定义的环境变量名称一般为小写,这样是为了避免命名上的冲突。
自定义临时环境变量时,有两种办法,一种是在terminal终端命令行直接定义,如下:
在这里插入图片描述
注意,此时自定义的my环境变量的作用范围仅限于当前shell(此时定义的my变量实际上是局部变量),在当前shell的子shell中无法寻找到该自定义变量。直接在其子shell中无法直接使用它。要想在其子shell中使用,必须用export命令来导出它为全局变量。
在这里插入图片描述
如上图所示,在定义my环境变量的子shell中无法识别到my环境变量。
当定义完my环境变量后,利用export命令将其转化为全局变量:
在这里插入图片描述
可以看到,使用export将my环境变量导出成全局变量后,在其子shell中也可以识别到。
**注意!!!!**使用export导出的my环境变量仅仅适用于当前的shell及其衍生shell中,退出当前shell后,my变量将不复存在。所以,这也是该方法被称为临时定义变量的原因。
自定义临时环境变量时,除了在terminal终端命令行直接定义外,还可以使用shell脚本的方法来事先定义好一个环境变量。并用source命令(或者 . 命令)(这么做是因为使用这两个命令是在当前shell中激活该脚本,不会产生子shell)在使用该变量的shell中激活该shell脚本即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)