在类似Unix的操作系统上,set命令是Bourne shell(sh),C shell(csh)和Korn shell(ksh)的内置函数,用于定义和确定系统环境的值。
查看英文版
1 set 运行系统环境
2 set 语法
3 set 例子
Unix&Linux
Bourne shell (sh):
set [--aefhkntuvx[argument]]...
C shell (csh):
set [var[=value]]
set var [n] = word
Korn shell (ksh):
set [+-aefhkmnopstuvx] [+-o option]... [+-A name] [arg...]
选项:Bourne Shell(sh)
在sh中,set内置命令具有以下选项:
- | 双破折号(“ - ”)的选项表示选项列表的末尾。这个选项主要是有用的,当选项后列出的值将与破折号自己开始。 |
-a | 标记为“导出”修改或创建的变量;以这种方式设置的环境变量将被传递到任何后续命令的环境中。 |
-e | 如果命令以非零退出状态退出,则立即退出。 |
-f | 禁用文件名生成(globlob)。 |
-h | 在定义功能时定位并记住功能命令(执行功能时通常会找到功能命令)。 |
-k | 所有关键字参数都放置在命令环境中,而不仅仅是命令名称前面的参数。 |
-n | 读取命令但不执行。 |
-t | 读取并执行一条命令后退出。 |
-u | 替换时,将未设置的变量视为错误。 |
-v | 读取时打印外壳输入行。 |
-x | 在执行命令时打印命令及其参数。 |
使用+而不是-导致这些标志被关闭。这些标志也可以在调用Shell本身时使用。当前的标志集可以在变量$-中找到。其余参数是位置参数,并按顺序分配给$ 1,$ 2等。如果未给出参数,则将打印所有名称的值。
对于每个名称,unset命令都会删除相应的变量或函数值。不能取消设置特殊变量PATH,PS1,PS2,MAILCHECK和IF。
使用内置导出命令,将给定名称标记为自动导出到随后执行的命令环境。如果未提供任何参数,则会列出在当前Shell执行期间已标记为导出的变量名称。函数名称不会导出。
选项:C Shell(csh)
在csh中,如果未指定任何参数,则set显示所有shell变量的值。多字值显示为带括号的列表。仅使用var参数,set会将一个空(null)值分配给变量var。使用var = value形式的参数时,set将value分配给var,其中value是以下之一:
word | 一个单词(或带引号的字符串)。 |
(wordlist) | 括号中用空格分隔的单词列表。 |
值是在分配之前扩展的命令和文件名。形式set var[ n ] =word替换n'th在一个多字个字值与字。
unset删除名称匹配(使用文件名替换)模式的变量。所有变量都用“ unset * ”删除;但是,如果您不知道自己在做什么,这是一个非常糟糕的主意。
选项:K Shell(ksh)
在ksh中,set命令采用以下选项:
-A | 数组分配。取消设置变量名称,并从列表arg顺序分配值。如果使用+ A,则不会先取消设置变量名。 | ||||||||||||||||||||||||||||||||||||||||
-a | 定义的所有后续变量都将自动导出。 | ||||||||||||||||||||||||||||||||||||||||
-e | 如果命令的退出状态为非零,请执行ERR 陷阱(如果已设置),然后退出。读取配置文件时禁用此模式。 | ||||||||||||||||||||||||||||||||||||||||
-f | 禁用文件名生成(globbing)。 | ||||||||||||||||||||||||||||||||||||||||
-h | 第一次遇到时,每个命令都会成为跟踪的别名。 | ||||||||||||||||||||||||||||||||||||||||
-k | 所有变量分配参数都放置在命令的环境中,而不仅仅是命令名称之前的参数。 | ||||||||||||||||||||||||||||||||||||||||
-m | 后台作业将在单独的进程组中运行,并在完成时打印一行。在完成消息中报告后台作业的退出状态。在具有作业控制的系统上,对于交互式shell,此标志会自动打开。 | ||||||||||||||||||||||||||||||||||||||||
-n | 阅读命令并检查它们是否存在语法错误,但不要执行它们。忽略交互式外壳。 | ||||||||||||||||||||||||||||||||||||||||
-o potion |
该选项参数可以是下列情况之一:
|
||||||||||||||||||||||||||||||||||||||||
-p | 禁用$ HOME / .profile文件的处理,并使用文件/ etc / suid_profile而不是ENV文件。只要有效uid(用户ID)不等于真实uid,或者有效gid(组ID)不等于真实gid,就会启用此模式。禁用此选项会使有效uid和gid设置为实际uid和gid。 | ||||||||||||||||||||||||||||||||||||||||
-s | 按字典顺序对位置参数进行排序。 | ||||||||||||||||||||||||||||||||||||||||
-t | 读取并执行一条命令后退出。 | ||||||||||||||||||||||||||||||||||||||||
-u | 替换时,将未设置的参数视为错误。 | ||||||||||||||||||||||||||||||||||||||||
-v | 读取时打印外壳输入行。 | ||||||||||||||||||||||||||||||||||||||||
-X | 在执行命令时打印命令及其参数。 | ||||||||||||||||||||||||||||||||||||||||
-- | 关闭-x和-v标志,并停止检查标志的参数。 | ||||||||||||||||||||||||||||||||||||||||
-- | 请勿更改任何标志。在将$ 1设置为以-开头的值时很有用。如果没有参数跟随此标志,则未设置位置参数。 |
使用+而不是-导致这些标志被关闭。这些标志也可以在调用Shell时使用。当前标志集可以在$-中找到。除非指定-A,否则其余参数为位置参数,并按顺序分配给“ $ 1 $ 2 ...”。如果未提供任何参数,则所有变量的名称和值都将显示在标准输出上。
名称列表给定的变量将自动取消分配:它们的值和属性将被删除。只读变量不能被设置。如果设置了-f标志,则名称指的是函数名称。解封ERRNO,LINENO,MAILCHECK,OPTARG,OPTIND,RANDOM,SECONDS,TMOUT和_删除,即使他们随后被分配其特殊的意义。
当使用unset时,名称列表中给定的变量同样未被分配:它们的值和属性被删除。只读变量不能被设置。如果设置了-f标志,则名称指的是函数名称。解封ERRNO,LINENO,MAILCHECK,OPTARG,OPTIND,RANDOM,SECONDS,TMOUT和_删除,即使他们随后被分配其特殊的意义。
使用内置导出命令,将给定名称标记为自动导出到后续执行的命令环境。前面带有一或两个“ * ”字符(星号)的ksh命令将按以下方式进行特殊处理:
查看英文版
set PATH="/bin:/usr/bin:/usr/sbin:usr/local/bin"
在csh中,此命令设置环境变量PATH,以便外壳程序将按该顺序在/ bin,/ usr / bin,/ usr / sbin和/ usr / local / bin目录中搜索文件。
查看英文版
sysklogd | s2p | service | sag | setenv | setfacl | sfdisk | sha224sum | sha256sum | sha384sum | sha512sum | shutdown | sleep | stat | startx | strftime | strip | swapoff | shred |
未知的网友