环境变量

环境变量是一个动态命名的值,可以影响运行进程在计算机上的行为方式。它们是进程运行环境的一部分。例如,运行的进程可以查询TEMP环境变量的值以找到存储临时文件的合适位置,也可以查询HOME或USERPROFILE变量以查找运行进程的用户拥有的目录结构

在Unix上,setuid程序由其调用方选择的环境,但它以不同于调用方的权限运行。动态链接器通常会从环境变量$LD_LIBRARY_PATH$LD_PRELOAD指定的位置加载代码,并使用进程的权限运行它。如果setuid程序这样做了,它将不安全,因为其调用者可能会让它运行任意代码,从而滥用其权限。为此,libc在setuid进程中启动时取消设置这些环境变量。setuid程序通常取消设置未知环境变量并检查其他环境变量或将其设置为合理的值。

环境变量的语法

这些变量可以在脚本和命令行中使用。它们通常通过在变量名称之前或周围放置特殊符号来引用。例如,要显示用户主目录,在大多数脚本环境中,用户必须键入:

echo $HOME

在DOS、OS/2和Windows命令行解释器(如COMMAND.COMcmd.exe)中,用户必须键入以下类型:

回声%HOME%

在Windows PowerShell中,用户必须键入以下类型:

写入输出$env:HOMEPATH

envsetprintenv命令显示所有环境变量及其值。printenv也可以通过将该变量名称作为命令的xxx参数来打印单个变量。

环境变量示例

环境变量的例子包括:

  • PATH:目录路径列表。当用户键入命令而不提供完整路径时,会检查此列表,以查看它是否包含指向该命令的路径。
  • HOME(类Unix)和USERPROFILE(Microsoft Windows):指示用户的家庭目录在文件系统中的位置。
  • HOME/{.AppName} (Unix-like) and APPDATA{DeveloperNameAppName} (Microsoft Windows): for storing application settings. Many applications incorrectly use USERPROFILE for application settings in Windows: USERPROFILE should only be used in dialogs that allow user to choose between paths like Documents/Pictures/Downloads/Music; for programmatic purposes, APPDATA (for roaming application settings shared across multiple devices), LOCALAPPDATA (for local application settings) or PROGRAMDATA (for application settings shared between multiple OS users) should be used.
  • TERM (Unix-like): specifies the type of computer terminal or terminal emulator being used (e.g., vt100 or dumb).
  • PS1(类Unix):指定提示符如何在伯恩壳和变体中显示。
  • MAIL(类Unix):用于指示在哪里可以找到用户的邮件
  • TEMP:进程可以存储临时文件的位置。
0

点评

点赞

相关文章