Linux学习之环境变量

很多程序和脚本都通过环境变量来获取系统信息,存储临时数据和配置信息。

bash shell用一个叫做环境变量的特性来存储有关shell会话和工作环境的信息,这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们。

全局环境变量对于shell会话和所有生成的子shell都是可见的,局部变量则只对创建它们的shell可见。Linux系统在你开始bash会话时就设置了一些全局环境变量,系统环境变量基本上都是使用全大写字母,以区别于普通用户的环境变量。

使用env或printenv命令查看全局变量。要显示个别环境变量的值,可以使用printenv命令,但是不要用env命令。比如printenv HOME。也可以使用echo显示变量的值,在这种情况下引用环境变量的时候,必须在变量前面加上一个美元符($)

Linux系统并没有一个只显示局部环境变量的命令,set命令会显示为某个特定进程设置的所有环境变量,包括局部变量,全局变量以及用户定义变量。

设置局部用户定义变量:一旦启动了bash shell(或者执行一个shell 脚本),就能创建在这个shell进程内可见的局部变量了。可以通过等号给环境变量赋值,值可以是数值或字符串。如果要给变量赋一个含有空格的字符串值,必须用引号来界定字符串的首和尾。如:

echo $my_variable                //创建环境变量

my_variable=Hello                //给该环境变量赋值

echo $my_variable                //查看赋值是否成功

设置全局环境变量:创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。这个过程通过export命令来完成,变量名前面不需要加$。

删除环境变量:unset命令。在unset命令中引用环境变量时,不要使用$。但是在处理全局环境变量时,事情就有点棘手。如果你是在子进程中删除了一个全局环境变量,这只对子进程有效,该全局变量在父进程中依然可用。

设置PATH环境变量

当在shell命令行界面中输入一个外部命令时,shell必须搜索系统来找到对应的程序。PATH环境变量定义了用于进行命令和程序查找的目录。如果命令或者程序的位置没有包括在PATH变量中,那么如果不使用绝对路径的话,shell是没法找到的,如果shell找不到指定的命令或者程序,它会产生一个错误信息。

应用程序放置可执行文件的目录常常不在PATH环境变量所包含的目录,解决的办法是保证PATH环境变量包含了所有应用程序的目录。如:PATH=$PATH:/home/christines/scripts。如果希望子shell也能找到你的程序的位置,一定要记得把修改后的PATH环境变量导出。

定位系统环境变量

在登录Linux系统启动一个bash shell时,默认情况下bash会在几个文件中查找命令,这些文件叫做启动文件或环境文件。bash检查启动文件取决于你启动bash shell的方式,启动bash shell有3中方式:

        登录时作为默认登录shell

        作为非登录shell的交互式shell

        作为运行脚本的非交互shell

1. 登录shell

当登录Linux时,bash shell会作为登录shell启动,登录shell会从5个不同的启动文件里读取命令:

        /etc/profile                :系统默认的bash shell的主启动文件,系统上每个用户登录时都会执行这个启动文件。

下面4个启动文件时针对用户的,可以根据个人需求定制。提供一个用户专属的启动文件来定义该用户所用到的环境变量,大多数Linux发行版只用这四个启动文件中的一到两个。它们都位于用户的HOME目录下,所以每个用户都可以编辑这些文件并添加自己的环境变量,这些环境变量会在每次启动bash shell会话时生效。shell会按照下列顺序,运行第一个被找到的文件,余下的则被忽略:

        /SHOME/.bash_profile        

        /SHOME/.bash_login

        /SHOME/.profile

       列表中没有 /SHOME/.bashrc,因为该文件通常通过其他文件运行。

交互式shell进程

如果bash shell不是登录系统时启动的,那么启动的shell叫做交互式shell。交互式shell不会像登录shell一样运行,但它依然提供了命令行提示符来输入命令。如果bash时作为交互式shell启动的,它就不会访问/etc/profile文件,只会检查用户HOME目录中的.bashrc文件。

非交互式shell

系统执行shell脚本时用的就是这种shell,不同的地方就是它没有命令行提示符。当在系统上运行脚本时,也许希望能够运行一些特定的启动命令,bash shell提供了BASH_ENV环境变量。当shell启动一个非交互式shell进程时,它会检查这个环境变量来查看要执行的启动文件,shell会执行该文件里的命令。

环境变量持久化

对于全局环境变量来说,可能更倾向于将新的或修改过的变量设置放在/etc/profile文件中,但是如果升级了所用的发行版,这个文件也会跟着更新,按所有定制过的变量设置就都没有了。最好是在/etc/rpofile.d目录中创建一个以.sh结尾的文件,把所有新的或修改过的全局环境变量放在这个文件中。

数组变量

环境变量可以作为数组使用,数组中的值可以单独引用也可以作为整个数组来引用。如:

mytset=(one two three fore five)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Linux环境变量的语法可以帮助你正确设置和管理环境变量。下面是一些常见的Linux环境变量语法: 1. 设置环境变量: - 使用`export`命令来设置环境变量。语法如下: ``` export VARIABLE_NAME=value ``` 其中,`VARIABLE_NAME`是环境变量的名称,`value`是相应的值。例如,要设置`PATH`环境变量,可以使用: ``` export PATH=/usr/local/bin:$PATH ``` 2. 查看环境变量: - 使用`echo`命令来查看特定环境变量的值。语法如下: ``` echo $VARIABLE_NAME ``` 例如,要查看`PATH`环境变量的值,可以使用: ``` echo $PATH ``` 3. 永久设置环境变量: - 如果希望永久设置环境变量,可以将相应的设置语句添加到Shell的配置文件中。常见的配置文件包括: - `~/.bashrc`:用户级别的配置文件,适用于当前用户。 - `~/.profile`:用户级别的配置文件,在登录时会加载。 - `/etc/environment`:全局级别的配置文件,适用于所有用户。 - 打开相应的配置文件,使用文本编辑器添加设置语句,保存并重新加载Shell配置,或者重新登录以使设置生效。 4. 变量替换: - 在环境变量的值中,可以使用其他环境变量或命令的输出进行替换。 - 使用`${}`语法进行变量替换。例如,要将`$HOME`环境变量的值添加到`PATH`中,可以使用: ``` export PATH=${HOME}/bin:$PATH ``` - 使用`` `command` ``或`$(command)`语法来替换命令的输出。例如,将当前日期添加到环境变量中: ``` export CURRENT_DATE=$(date +%Y-%m-%d) ``` 这些是一些常见的Linux环境变量语法。通过学习和实践,你可以更好地理解和应用环境变量的设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值