加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

练习 5:Bash:环境变量,env,set,export

发布时间:2020-12-15 16:12:17 所属栏目:安全 来源:网络整理
导读:请考虑以下内容:你希望程序打印出你的用户名。这个程序怎么知道的?在 Linux 中有一些环境变量。这意味着你的 shell 中有许多变量,其中许多变量自动设置,每次运行程序时,其中一些变量将传递给该程序。 + 详细说明: 一些变量只为你当前的 shell 设置。它

请考虑以下内容:你希望程序打印出你的用户名。这个程序怎么知道的?在 Linux 中有一些环境变量。这意味着你的 shell 中有许多变量,其中许多变量自动设置,每次运行程序时,其中一些变量将传递给该程序。

+

详细说明:

  • 一些变量只为你当前的 shell 设置。它们被称为本地 shell 变量。你可以通过键入set,一个 bash 内置命令来列出它们 ,这意味着没有启动其它程序,之后你执行了它。此命令由 bash 本身处理。

  • 其他变量被传递到你从当前 shell 启动的每个程序。它们被称为环境变量,可以通过env程序列出,这意味着,通过键入env, 你将看到,你启动的每个程序获得了什么变量。

你可能想要深入挖掘。要做到这一点,掌握subshell的概念,这是一个子进程,当你运行程序时创建,并且成为你的程序。

现在,你将学习如何创建变量以及如何使用变量。

这样做

1: foo='Hello World!'
2: echo $foo
3: set | grep foo
4: env | grep foo
5: export foo
6: env | grep foo
7: foo='ls -al'
8: $foo

你会看到什么

uset1@vm1:~$ foo='Hello World!'
user1@vm1:~$ echo $foo
Hello World!
user1@vm1:~$ set | grep foo
foo='Hello World!'
user1@vm1:~$ env | grep foo
user1@vm1:~$ export foo
user1@vm1:~$ env | grep foo
foo=Hello World!
user1@vm1:~$ foo='ls -al'
user1@vm1:~$ $foo
total 36
drwxr-xr-x 2 user1 user1 4096 Jun 14 12:23 .
drwxr-xr-x 3 root  root  4096 Jun  6 21:49 ..
-rw------- 1 user1 user1 4042 Jun 15 18:52 .bash_history
-rw-r--r-- 1 user1 user1  220 Jun  6 21:48 .bash_logout
-rw-r--r-- 1 user1 user1 3184 Jun 14 12:24 .bashrc
-rw------- 1 user1 user1   50 Jun 15 18:41 .lesshst
-rw-r--r-- 1 user1 user1  697 Jun  7 12:25 .profile
-rw-r--r-- 1 user1 user1  741 Jun  7 12:19 .profile.bak
-rw-r--r-- 1 user1 user1  741 Jun  7 13:12 .profile.bak1

解释

  1. 创建变量foo,并将Hello World!这一行放在其中。
  2. 打印出变量foo
  3. 打印所有环境变量的列表,它传递给grep,打印出只包含变量foo的行。注意变量foo存在。
  4. 打印所有环境变量列表,它们传递给你执行的任何程序。注意变量foo不存在。
  5. 使变量foo可用于从当前 shell 执行的所有程序。
  6. 现在你可以看到,你的变量确实可用于你执行的所有程序。
  7. ls /放入变量foo
  8. 执行包含在变量foo中的命令。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读