shell中文件路径用变量定义_环境变量

e88691864e83990d929a5ec171fe7430.png

环境变量可以使得 bash shell 存储有关 shell 会话和工作环境的信息,允许在内存中存储数据。


在 bash shell 中,环境变量分为:

  • 全局变量
  • 局部变量

全局变量对 shell 会话和所有生成的子 shell 都可见。局部变量只对创建他们的 shell 可见。


全局环境变量

  • 变量名全部大写,以区别普通用户的环境变量
  • 查看命令: env 或者 printenv 变量名,或者 $变量名

局部环境变量

  • Linux 默认定义了标准的局部环境变量
  • 没有命令能够只显示局部变量
  • set 命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量、用户定义变量

用户定义变量

设置局部用户定义变量

如,定义 h 的值为 Hello World!。 注意,变量名、等号和值之间没有空格。

#step1
echo $h
#step2
h="Hello World!"
#step3 使用
echo $h

特点:只能在定义该变量的 shell 中使用。

设置全局环境变量

如,定义 h 的值为 Hello World!。

#step1
h="Hello World!"
#step2
export $h
# step3 使用
echo $h

特点:在子 shell 中也可以使用,子 shell 中可以修改,但不会影响父 shell 的变量值。

删除环境变量

如,删除上面定义的 h

#step1
unset h
#step2 查看
echo $h

特点:如果在子 shell 中删除,只会在子 shell 中生效。在父进程依然可以用。


默认的 shel 环境变量

通常,bash shell 已经用一些变量定义好了系统环境。
由于 bash shell 源于 Unix Bourne shell,因此保留了 Unix Bourne shell 的一些变量。当然还有自有的变量。详情请看纸质书籍的 p110 ~ p113 的两个表。

设置 PATH 环境变量

当你在 shell 中输入一个外部命令时,shell 会搜索你输入的命令。搜索的范围就是 PATH 环境变量定义好的。
如,在我的 Ubuntu 18.04 中:

#step1
echo $PATH
#结果
/usr/local/bin/jdk-10.0.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

目录使用冒号 : 分隔。如果你输入的命令不在 PATH 指定的任何一个目录下面,且又不是使用绝对路径的话,shell 就找不到该命令,无法执行操作。

添加

如,要添加 /opt/adb

#step1
PATH=$PATH:/opt/adb

这时候,在任何目录都可以执行 adb 命令了。但是如果退出了 shell 或者重启系统就失效了。

定位系统环境变量

在你登录 Linux 系统启动一个 bash shell 时,默认 bash 会从 启动文件/环境文件 查找命令。启动文件是哪些取决于你启动 bash shell 的方式。启动 bash shell 有三种:

  • 登录时作为默认登录 shell
  • 作为非登录 shell 的交互式 shell
  • 作为运行脚本的非交互式 shell

登录 shell

从 5 个不同的启动文件里读取命令:

  • /etc/profile
  • ~/.bash_profile
  • ~/.bashrc
  • ~/.bash_login
  • ~/.profile

其中 /etc/profile 是主启动文件。不同的 Linux 发行版在这里放了不同的命令。
~/ 下的启动文件,提供一个用户专属的启动文件。大多数的 Linux 的发行版只用到其中的一个到两个。
shell 会按照下列的顺序,运行第一个被找到的文件,余下的则忽略:

~/.bash_profile
~/.bash_login
~/.profile

~/.bashrc 通常通过其他文件运行。


交互式 shell

只会检查 ~/.bashrc
.bashrc 文件有两个作用:1.查看 /etc 下的 bashrc 文件,2.为用户提供一个定制自己的命令别名和私有脚本函数的地方。

非交互式 shel

系统执行 shell 脚本的时候。bash shell 会检查 BASH_ENV 来查看要执行的启动文件。如果有指定的文件 shell 就会执行,如果没有,就查看父 shell 的变量。对于不启动子 shell 的脚本,变量已经存在当前的 shell 里了。

环境变量持久化

在 /etc/profile.d 目录下创建一个 .sh 文件,把全局环境变量放在这里。
在大多数发行版中,存储个人用户永久性 bash shell 变量的地方是 ~/.bashrc


数组变量

就是给环境变量设置多个值。如:

mytest=(one two three four)
#显示某个索引的值
echo ${mytest[1]}
#显示所有的值
echo ${mytest[*]}
#改变某个索引的值
mytest[2]=second
#删除某个值
unset mytest[2]

注意:数组变量在 shell 脚本编程中不常用。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值