SYNOPSIS 总览

extern char **environ;

DESCRIPTION 描述

变量 environ 指向的是一个叫 'environment'(环境)的字符串数组 (这个变量必须在用户程序中声明,但是在使用 libc4 或 libc5 以及使用 glibc 并且定义了 _GNU_SOURCE 的情况下 ,它是在头文件 unistd.h 中声明的)。对于一个进程,这个字符串的数组是通过开始进程的 exec(3) 调用来得到,习惯上,这些字符串的格式是

USER
登录用户的名字(被一些从 BSD 派生来程序所使用)。
LOGNAME
登录用户的名字(被一些从 System-V 派生来程序所使用)。
HOME
用户的登录目录,被login(1)按口令文件 passwd(5) 设置。
LANG
当不被 LC_ALL 或更特殊的环境变量所忽略的时候,是用于地域分类的地域名。
PATH
预先设定的目录前缀的序列,sh(1) 和许多程序可借此查找路径名不完全的文件。前缀由':'分隔。(类似的,有一些 shell 用 CDPATH 查找位于不同目录的命令,以及用 MANPATH 找手册页等等。)
PWD
当前的工作路径。被一些 shell 设置。
SHELL
用户的登录 shell 的文件名。
TERM
用于准备输出的终端类型。
PAGER
用户指定的显示文本文件的工具。
EDITOR/VISUAL
用户指定的编辑文本文件的工具。

更多的名字可以通过和在 sh(1) 中的 export 命令和 'name=value',或 csh(1) 中的 setenv 命令设置。参数也可以在执行 exec(2) 的时候被放置在环境中。一个 C 程序可以使用函数 getenv(3)putenv(3)setenv(3)unsetenv(3) 来操纵自身的环境。

注意许多程序和库例程的行为受特定的环境变量的存在和值的影响。随便的搜集一下就有:

环境变量 LANG、LANGUAGE、NLSPATH、LOCPATH、LC_ALL、 LC_MESSAGES 等影响地域的处理。

TMPDIR 影响 tmpnam(3) 生成名字的路径名前缀和其他一些例程, sort(1) 和其他程序用的临时文件目录等等。

LD_LIBRARY_PATH、LD_PRELOAD 和其他 LD_* 变量影响动态 (装载器/连接器)的行为。

POSIXLY_CORRECT 使特定的程序和库例程遵循 POSIX 规定。

MALLOC_* 变量影响 malloc(3) 的行为。

HOSTALIASES 变量给出包含 gethostbyname(3) 用的别名的文件的文件名。

TZ 和 TZDIR 给出时区信息。

TERMCAP 给出给定终端的窗口大小(或给出包含这种信息的文件的文件名)。

等等,还有很多。

这里有一个明显的安全风险。不止一个系统命令曾经被一个使用了一个不寻常的 IFSLD_LIBRARY_PATH 变量值的用户诱入骗局中。

environ - 用户环境(变量)的更多相关文章

  1. Linux用户环境变量

    Linux用户环境变量 环境变量就是系统或软件设置的一些参数,用户环境变量就是用户登录系统后,都有自已专用的运行环境.在Windows系统中用户环境变量保存在用户家目录,Linux也是同样的.本文主要 ...

  2. linux sudo 系统环境变量 用户环境变量

    1. sudo就是普通用户临时拥有root的权限.好处在于,大多数时候使用用户自定义的配置,少数情况可以通过sudo实现root权限做事. 故而,需要注意的一点是,在你使用了sudo后,你临时不再是原 ...

  3. Mac 修改用户环境变量

    Mac 修改用户环境变量 sudo vim ~/.bash_profile

  4. Linux - 用户环境变量的查看与设置

    1. 查看当前有哪些环境变量 直接输入命令:env 2. 设置用户环境变量 输入命令:vim ~/.bash_profile,打开文件,输入如下内容: 范例(设置maven环境变量): export ...

  5. 用户环境变量 shell变量 别名

    常见用户环境变量: 环境变量 说明 LANG   HOME   LOGNAME 用户名 PATH   SHELL   PWD   查看环境变量用:env或者echo $LANG 设置用户环境变量:ex ...

  6. linux修改当前用户环境变量永久生效

    在linux环境中,修改当前用户环境变量,且永久生效的方法如下. 1,编辑~/.bash_profile文件 1 2 3 # Get the aliases and functions 4 if [ ...

  7. Center os 用户环境变量

    vi ~/.bash_profile进入用户环境变量设置 export JAVA_HOME=/usr/java/jdk1.7.0_76export JAVA_BIN=$JAVA_HOME/binexp ...

  8. python 设置系统/用户环境变量

    系统环境变量 winreg.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' 用户环境变 ...

  9. (转)在Linux里设置用户环境变量的方法

    背景:在linux下,root用户安装完jdk后,非root用户不能使用java环境变量. 问题排查: 通过在root和非root用户下分别执行echo $PATH 可以观察环境变量的异同.然后将需要 ...

随机推荐

  1. [USACO2012 OPEN] Bookshelf

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2678 [算法] 首先不难想到如下DP : 记f[i]表示前i本书的高度和最小值 显然 ...

  2. bzoj2973石头游戏——矩阵乘法

    题目:权限题! 写了一下,但提交不了,先放着吧. 代码如下: #include<iostream> #include<cstdio> #include<cstring&g ...

  3. bzoj2839

    容斥原理+组合数学 看见这种恰有k个的题一般都是容斥原理,因为恰有的限制比较强,一般需要复杂度较高的方法枚举,而容斥就是转化为至少有k个,然后通过容斥原理解决 我们先选出k个元素作为交集,有C(n,k ...

  4. 【旧文章搬运】对抗RKU的StealthCode检测

    原文发表于百度空间,2009-07-02========================================================================== 快一个月没 ...

  5. 数据库sql互转(oracle转mysql为例子)

    转自: https://blog.csdn.net/sinat_32366329/article/details/76402059 在PowerDesinger里找到 File -->> ...

  6. Java泛型简明教程

    泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它.关于Java泛型的教程,免费的,不免费的,有很多.我遇到的最好的教材 ...

  7. 跟我一起玩Win32开发(20):浏览文件夹

    最近忙于一些相当无聊的事情,还没忙完,不过,博客还是要写的,不然我头顶上会多了几块砖头. 在上一篇博文中,我们浏览了文件,今天我们也浏览一下目录,如何? 浏览目录我们同样有两个规矩,用托管类库的我就不 ...

  8. 跟我一起玩Win32开发(10):绘图(C)

    今天我们来欣赏一下用于填充图形的函数,当然我不会逐个去介绍,因为我们参考MSDN直接套参数就可以了. SetDCBrushColor函数有必要扯一下,它的声明如下: COLORREF SetDCBru ...

  9. Tomcat启动后打开页面提示404错误的解决

    Eclipse配置并启动Tomcat成功,但有时会访问localhost:8080出现404错误,此时需要修改Tomcat配置.步骤如下: 在Eclipse中双击Tomcat server,打开Tom ...

  10. redirect与forward的区别

    文件名称:forward.jsp <html> <head><title> 跳转 </title> </head> <body> ...