Linux-set

语法

set [+-abCdefhHklmnpPtuvx]

作用

可以用来查看所有变量(含环境变量与自定义变量)。

Linux set命令用于设置shell。

set指令能设置所使用shell的执行方式,可依照不同的需求来做设置。

参数

  • -a  
    allexport
    标示已修改的变量,以供输出至环境变量。
  • -b
    使被中止的后台程序立刻回报执行状态。
  • -C  
    转向所产生的文件无法覆盖已存在的文件。
  • -d  
    Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
  • -e  
    若指令传回值不等于0,则立即退出shell。
  • -f   
    取消使用通配符。
  • -h  
    自动记录函数的所在位置。
  • -H Shell  
    可利用”!”加<指令编号>的方式来执行history中记录的指令。
  • -k  
    指令所给的参数都会被视为此指令的环境变量。
  • -l  
    记录for循环的变量名称。
  • -m  
    使用监视模式。
  • -n  
    只读取指令,而不实际执行。
  • -p  
    启动优先顺序模式。
  • -P  
    启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
  • -t  
    执行完随后的指令,即退出shell。
  • -u  
    当执行时使用到未定义过的变量,则显示错误信息。
  • -v  
    显示shell所读取的输入值。
  • -x  
    执行指令后,会先显示该指令及所下的参数。
  • +<参数>  
    取消某个set曾启动的参数。

使用实例

打印当前set设置值

[root@Ethan ~]# echo $-
himBH

将普通变量设置为环境变量

set -a text

显示环境变量

[root@192 Ethan]# set | head
ABRT_DEBUG_LOG=/dev/null
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_REMATCH=()

将文件中的变量定义为环境变量

[root@localhost ~]# set source + filename

查看各个参数的默认状态

[root@192 Ethan]# set -o
allexport       on
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       off
interactive-comments    on
keyword         off
monitor         on
noclobber       off
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

变量未定义显示错误

[root@Ethan ~]# set -u 
[root@Ethan ~]# echo $Ethan
-bash: Ethan: unbound variable
[root@Ethan ~]# set +u

执行命令前显示命令

先创建一个shell脚本文件。

set -x 
PS4='$0.$LINENO+ '
echo "hello world"
ls /Ethan

可以看到在运行代码前会先显示要执行的命令,命令前的提示符可以通过PS4更改。

[root@Ethan /Ethan]# sh p4.sh  
+ PS4='$0.$LINENO+ '
p4.sh.3+ echo 'hello world'
hello world
p4.sh.4+ ls /Ethan
declareLen.sh  p4.sh
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值