Linux set命令介绍
set命令是一个内置的shell命令,它可以用来设置或显示shell变量和函数。set命令还可以用来控制shell的行为,比如设置选项、启用或禁用位置参数、设置退出状态等。set命令可以让你自定义你的shell环境,增加灵活性和安全性。
适用的Linux版本
set命令是一个通用的shell命令,它可以在大多数Linux发行版中使用,包括Ubuntu、Debian、Fedora、CentOS等。不同的shell可能有不同的set命令选项和功能,比如bash、zsh、ksh等。本文主要以bash为例进行讲解,如果你使用其他的shell,请参考相应的文档。
Linux set命令的基本用法
set命令的语法格式如下:
set [选项] [参数]
如果不带任何选项和参数,set命令会显示当前所有的shell变量和函数,按照字母顺序排序。如果带有选项,set命令会根据选项来设置或取消设置shell的行为。如果带有参数,set命令会将参数作为位置参数,并将$#设置为参数的个数。
Linux set命令的常用选项说明
set命令有很多选项,可以用来控制shell的行为。这里列出一些最常用的选项:
选项 | 说明 |
---|---|
-a | 将所有赋值操作后面的变量标记为导出变量,相当于export命令 |
-b | 使得后台运行的作业在结束时立即报告状态 |
-e | 如果一个简单的命令执行失败,则退出shell |
-f | 禁止文件名扩展(通配符扩展) |
-h | 记住每个函数名和它所对应的文件名 |
-n | 只读取命令但不执行,用于检查语法错误 |
-o option-name | 设置或取消设置给定名称的shell选项,比如errexit, nounset, pipefail等 |
-u | 对未定义变量进行引用时打印错误信息并退出shell |
-v | 打印shell输入行 |
-x | 打印执行的每个命令及其参数 |
Linux set命令的实例
下面是一些使用set命令的实例:
显示所有变量和函数
[linux@bashcommandnotfound.cn ~]$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="5" [1]="1" [2]="0" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='5.1.0(1)-release'
...
设置位置参数
[linux@bashcommandnotfound.cn ~]$ set a b c
[linux@bashcommandnotfound.cn ~]$ echo $#
3
[linux@bashcommandnotfound.cn ~]$ echo $1
a
[linux@bashcommandnotfound.cn ~]$ echo $2
b
[linux@bashcommandnotfound.cn ~]$ echo $3
c
启用文件名扩展
[linux@bashcommandnotfound.cn ~]$ set -f
[linux@bashcommandnotfound.cn ~]$ echo *
*
[linux@bashcommandnotfound.cn ~]$ set +f
[linux@bashcommandnotfound.cn ~]$ echo *
Desktop Documents Downloads Music Pictures Public Templates Videos
启用命令追踪
[linux@bashcommandnotfound.cn ~]$ set -x
[linux@bashcommandnotfound.cn ~]$ ls
+ ls --color=auto
Desktop Documents Downloads Music Pictures Public Templates Videos
[linux@bashcommandnotfound.cn ~]$ pwd
+ pwd
/home/linux
启用错误退出
[linux@bashcommandnotfound.cn ~]$ set -e
[linux@bashcommandnotfound.cn ~]$ ls /tmp/foo
ls: cannot access '/tmp/foo': No such file or directory
[linux@bashcommandnotfound.cn ~]$ echo $?
2
Linux set命令的注意事项
- set命令的选项可以用
+
来取消设置,比如set +e
表示取消错误退出。 - set命令的选项可以用
-
或+
来组合使用,比如set -ef
表示同时启用错误退出和禁用文件名扩展。 - set命令的选项可以用
-o
或+o
来指定名称,比如set -o errexit
和set -e
是等价的。 - set命令可以用
--
来结束选项,后面的参数都会被当作位置参数,比如set -- a b c
。 - set命令可以用
-o
不带任何参数来显示当前所有的shell选项及其状态。
Linux set命令的快捷键
有些set命令的选项可以用快捷键来启用或禁用,这些快捷键通常以Ctrl或Alt开头,比如:
快捷键 | 说明 |
---|---|
Ctrl-x Ctrl-v | 显示当前shell的版本信息 |
Alt-x | 打印当前输入的命令并执行 |
Ctrl-x Ctrl-e | 用默认编辑器编辑当前输入的命令并执行 |
评论区