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. Linux Cache 机制

    在阅读文章前,您应该具备基本的存储器层次结构知识,至少要了解局部性原理.要详细了解cache基本原理,可以参考本书<深入理解计算机系统>中存储器体系结构一章: 带着疑问来看文章,cache ...

  2. 【旧文章搬运】360安全卫士HookPort.sys完美逆向

    原文发表于百度空间,2009-11-08 这是第一次逆向一个企业级安全产品的核心代码,并完美替换原驱动正常工作============================================= ...

  3. 利用记事本和cmd进行java编程(从安装IDE--编译--运行)

    java 最大特点---跨平台 所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行.这是软件发展的趋势和编程人员追求的目标.之所以这样说,是因为计算机硬件的种类繁多 ...

  4. 008--linux 基础之网络配置和ssh服务

    一.linux网络配置 ifconfig eno16777736 192.168.19.48/24   |   eno16777736(网卡名)   192.168.19.48/24(临时IP地址) ...

  5. STS和Eclipse安装Lombok插件

    参考:https://www.cnblogs.com/caozx/p/9510354.html 参考:https://blog.csdn.net/wutian90/article/details/87 ...

  6. 2016多校8th 1008【线段树-神题】

    题意: T N M N个数 M个操作 一个数组A, 有3个操作 1 l r x,a[l]-a[r]都+x 2 l r,a[i]=sqrt(a[i]),l<=i<=r 3 l r,求和,a[ ...

  7. zoj2412 dfs连通图

    zoj2412 #include<stdio.h> #include<iostream> #include<cstdio> #include<queue> ...

  8. PTA【复数相乘】

    队友在比赛时A掉的.吊吊吊!!! 主要考虑这些情况吧||| 案例: /* 3i i -3 i -1-i 1+i i 1 -1-i -1-i */ -3 -3i -2i i 2i #include &l ...

  9. bzoj3195: [Jxoi2012]奇怪的道路(状压dp)

    Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n.m条道路连接在这些城市之间,每 ...

  10. 一道简单的 Java 笔试题,但值得很多人反思!

    前言 面试别人,对我来说是一件新奇事,以前都是别人面试我.我清楚地知道,我在的地域与公司,难以吸引到中国的一流软件人才.所以,我特地调低了期望,很少问什么深入的技术问题,只问一些广泛的.基础的.我只要 ...