侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux set命令详解:如何设置和显示shell变量和函数

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 errexitset -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用默认编辑器编辑当前输入的命令并执行
0

评论区