首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最低要求的环境变量是什么?

最低要求的环境变量是什么?
EN

Stack Overflow用户
提问于 2016-07-08 03:17:48
回答 3查看 605关注 0票数 0

我正在写一个shell。

通过execvpe系统调用,我可以运行程序并控制其环境。我需要在这里传递的最小值是多少?

或者,我理解子进程应该有其父进程环境的副本,可能会添加一些值。在测试我的shell时,我从我的终端中的bash、窗口管理器等等中运行它。我可以假设我的环境中有哪些最基本的东西?如果我直接从TTY (据我所知的“最低级别”)运行我的shell,我能期待什么?

EN

回答 3

Stack Overflow用户

发布于 2016-07-08 04:00:45

这是一个非常宽泛的问题。在某种程度上,程序应该能够在没有任何环境的情况下运行。

  • “X”显示(即图形用户界面)程序需要知道它们应该显示在哪里。这些信息通常是通过DISPLAY环境变量提供的,但也可以在命令行上传递。可能还有其他环境变量对“X”程序是必要的(或几乎如此);
  • 任何需要使用终端的特殊特性的程序都需要TERM环境变量。“特殊特性”意味着能够设置颜色(就像lsgrep可以做的,取决于选项),在屏幕上移动(像vivim / 一样),或者甚至知道屏幕的大小(如格林尼治标准时间)和注意,屏幕的大小也可以通过需要知道日期和时间的ROWSCOLUMNS.
  • Any程序获得,因为用户需要知道时区(TZ) -尽管,如果你愿意使用绝对时间(格林尼治标准时间 / . ),你就不需要这个。

等。

票数 2
EN

Stack Overflow用户

发布于 2016-07-08 04:04:26

您需要的最低要求是一个有效的PATH变量。除此之外的任何额外功能都取决于您想要执行的程序。

POSIX has a list of commonly-used environment variables,很少有程序使用超过几个这样的代码。

通常,如果您使用的是execvp*,则不会给出可执行文件的完整路径名。它使您的程序更加简单,您不必像普通的execv所需要的那样,为每个可执行文件提供完整的路径名。POSIX将这些函数描述为

代码语言:javascript
复制
 int execv(const char *path, char *const argv[]);
 int execvp(const char *file, char *const argv[]);

和(指各种exec*函数的参数):

参数路径指向标识新进程图像文件的路径名。

参数文件用于构造标识新进程图像文件的路径名。如果file参数包含斜线字符,则file参数应用作此文件的路径名。否则,通过搜索作为环境变量PATH传递的目录来获得该文件的路径前缀(参见XBD环境变量)。如果此环境变量不存在,则搜索结果为implementation-defined.

和(请记住,“文件”指的是文件,而不是execv,因此environ变量适用于使用PATH搜索“文件”参数):

对于那些不包含环境指针(execl()execv()execlp(),和execvp()),的表单,新进程映像的环境应从调用进程中的外部变量

中获取。

所以..。从技术上讲,您可以删除整个PATH变量,但结果将是implementation-defined.

票数 2
EN

Stack Overflow用户

发布于 2016-07-08 04:59:34

最低必需环境为空。你什么都不需要。

例如:

代码语言:javascript
复制
$ env -i env
$ 

我们可以看到env -i已经创建了一个空白环境。

我们可以更进一步:

代码语言:javascript
复制
$ env -i /bin/bash
sweh@server:/home/sweh$ env
LS_COLORS=
PWD=/home/sweh
SHLVL=1
_=/usr/bin/env

我们可以看到,bash设置了一些变量,但没有继承任何变量。

现在,这样的环境可能会破坏一些东西;例如,缺少TERM变量意味着viless可能无法正常工作

代码语言:javascript
复制
$ less foo 
WARNING: terminal is not fully functional
foo  (press RETURN)

因此,实际上,您需要确定您希望在环境中运行的程序以及它们的需求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38261342

复制
相关文章

相似问题

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