首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >环境变量/shell变量显示了env和printenv

环境变量/shell变量显示了env和printenv
EN

Unix & Linux用户
提问于 2018-09-17 12:38:18
回答 1查看 4.5K关注 0票数 1

我见过像这样的相关问题,但它们没有给出我的问题的确切答案

从我的实验以及这个答案printenvenv来看,几乎都显示了相同的系统变量集。

如果我将变量设置为

  1. /etc/bash.bashrc (应该用于系统范围内的系统变量) SYSTEM_ENVI=1000
  2. ~/..bashrc(应该用于特定于用户的系统变量) USER_ENVI=10

我甚至注销并登录,这样/etc/环境就会生效。发生了以下情况:

代码语言:javascript
运行
复制
$echo $SYSTEM_ENVI
//outputs 1000
$echo $USER_ENVI
//outputs 10
$CURR_ENVI=1
$env | grep USER_ENVI
//nothing shows up, the same if I grepped SYSTEM_ENVI or CURR_ENVI
$set | grep USER_ENVI
//shows up USER_ENVI assignment, the same if I grepped SYSTEM_ENVI or CURR_ENVI

我的问题是:

  1. printenv/env打印哪些系统变量?
  2. 应该使用set来查看所有可访问变量(系统变量和局部变量)而不是printenvenv吗?

Regarding不重复说明

就我而言,这个问题和明确的答案帮助我认识到以下事实:

  1. Shell变量不是环境变量。
  2. /etc/bash.bashrc或~/..bashrc中的赋值不创建环境变量,而是指示交互式非登录shell进程在初创企业上创建和初始化这些shell变量。

我认为我的问题与这一个并没有什么不同,但是读到这个问题的标记答案并不能满足我在这篇文章中给出的答案。

EN

回答 1

Unix & Linux用户

发布于 2018-09-17 20:21:06

通过这样做:

代码语言:javascript
运行
复制
USER_ENVI=10

您正在设置变量,而不是环境变量。为此,你需要:

代码语言:javascript
运行
复制
export USER_ENVI=10

代码语言:javascript
运行
复制
USER_ENVI=10; export USER_ENVI

这是合理的,这不适用于你:

代码语言:javascript
运行
复制
$ env | grep SYSTEM_ENVI

没有称为SYSTEM_ENVI集的环境变量。关于/etc/environment,我们没有什么可说的,因为您还没有发布它的内容(或者似乎正在使用它)。

env将打印的内容与printenv应该打印的内容完全相同(没有选项)。

答案:

  1. env和printenv都会报告完全相同的变量列表--实际上设置了iif命令之后没有选项或变量列表。
  2. 您可以使用set (没有选项)查看所有变量集。这并不意味着您必须使用它。这取决于你想列出什么。只列出环境变量的列表是完全有效和正确的。
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/469543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档