Bash Shell-使用内置的set和shopt命令设置bash选项

使用内置的set和shopt命令设置bash选项

set命令可以用来定制shell环境,使用选项“o”来打开或者关闭选项。例如打开选项:set -o 选项,关闭选项目:set +o 选项。

例如要打开vi交互式命令行编辑,则如下:


[[email protected] ~]# set -o   #查看当前设置情况
allexport       off
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
[[email protected] ~]# set -o vi   #把vi选项打开
[[email protected] ~]# set -o      #查看当前设置情况
allexport       off
braceexpand     on
emacs           off
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              on                #已经打开
xtrace          off

内置set命令选项

选项名 快捷开关 含义
allexport -a 从这个选项中被设置开始就自动标明要输出的新变量或修改过的变量,直至选项被复位
braceexpand -B 打开花括号扩展,它是一个默认设置
emacs   使用emacs内置编辑器进行命令行编辑,是一个默认设置
errexit -e 当命令返回一个非零退出状态(失败)时退出。读取初始化文件时不设置
histexpand -H 执行历史替换时打开!和!!扩展,是一个默认设置
history   打开命令行历史、默认为打开
ignoreeof   禁止用EOF(Ctrl+D)键退出shell。必须键入exit才能退出。等价于设置shell变量IGNOREEOF=10
keyword -k 将关键字参数放到命令的环境中
interactive-comments   对于交互式shell,把#符后面的文本作为注释
monitor -m 设置作业控制
noclobber -C 防止文件在重定向时被重写
noexec -n 读命令,但不执行。用来检查脚本的语法。交互式运行时不开启
noglob -d 禁止用路径名扩展。即关闭通配符
notify -b 后台作业完成时通知用户
nounset -u 扩展一个未设置的变量时显示一个错误信息
onecmd -t 在读取和执行命令后退出
physical -P 设置时,在键入cd或pwd禁止符号链接。用物理目录代替
privileged -p 设置后,shell不读取.profile或ENV文件,且不从环境继承shell函数,将自动为setuid脚本开启特权
verbose -v 为调试打开verbose模式
vi   使用vi内置编辑器进行命令行编辑
xtrace -x 为调试打开echo模式
     

shopt命令是set命令的一种替代,很多方面都和set命令一样,但它增加了很多选项。可有使用“-p”选项来查看shopt选项的设置。“-u”开关表示一个复位的选项,“-s”表示选项当前被设置。


[[email protected] ~]# shopt -p    #查看当前设置情况
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -s checkwinsize
shopt -s cmdhist
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extdebug
shopt -u extglob
shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -u gnu_errfmt
shopt -u histreedit
shopt -u histappend
shopt -u histverify
shopt -s hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lithist
shopt -s login_shell
shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nullglob
shopt -s progcomp
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
shopt -u xpg_echo

[[email protected] ~]# shopt -s cdspell   #把cdspell选项打开
[[email protected] ~]# shopt -p cdspell    #打印cdspell设置
shopt -s cdspell
[[email protected] ~]# cd /raot            #故意拼写错误
/root
[[email protected] ~]# pwd                 #查看当前目录
/root
[[email protected] ~]# cd /usr/loca/bin   #故意拼写错误
/usr/local/bin
[[email protected] bin]# pwd               #查看当前目录   
/usr/local/bin
[[email protected] bin]# shopt -u cdspell #把cdspell选项打开
[[email protected] bin]# shopt -p cdspell #打印cdspell设置
shopt -u cdspell
[[email protected] bin]# cd /raot         #故意拼写错误
-bash: cd: /raot: 没有那个文件或目录     #进入目录错误

shopt命令选项

时间: 2024-10-08 21:12:09

Bash Shell-使用内置的set和shopt命令设置bash选项的相关文章

shell中内置关键字[[]]:检查条件是否成立

0.[[]] [] (())的对比 [[ ]] 对数字的比较不友好,所以使用 if 判断条件时,建议用(())来处理整型数字,用[[]]来处理字符串或者文件.   用法 说明 脚本 支持逻辑运算符 (()) ((expression)) 不需要注意空格 在 (( )) 中使用变量可以加也可以不加$前缀,(( )) 会自动解析变量名 只用于进行整数运算 可以使用<.<=.>.>=等进行整数运算 表达式可以只有一个,也可以有多个,多个表达式之间以逗号,分隔 对于多个表达式的情况,以最后

在Bash shell脚本编程中,如何正确无误获取到“脚本选项参数”和“脚本参数”呢?

Linnux 中有些命令的功能非常强大,主要是因为它支持的命令选项比较多.如:[ip]命令可以配置IP地址.路由条目的配置管理操作非常完善,该命令就可以完成[ifconfig]和[route]命令实现的所有功能.函数是单独的功能模块,如果函数能够接收选项参数,那么该函数的功能就变得丰富,且灵活.脚本也是一样. 那么linux中命令的格式又是怎么样的呢? [[email protected] ~]# command   [optons parameter1 | parameter2]...  pa

什么是Bash Shell的内建(build in)命令

1.什么是build in命令: shell内建命令是指bash(或其它版本)工具集中的命令.一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他们行为大体相仿.当在bash中键入一个命令时系统会先看他是否是一个内建命令,如果不是才会查看是否是系统命令或第三方工具.所以在bash中键入echo命令实际上执行bash工具集中的bash命令也就是内建命令,而不是/bin/echo这个系统命令. 2.内建命令与系统命令 内建命令要比系统论命令有比较

Linux进阶之bash编程四(内置变量)

一:基础回顾 1:文件清空 [[email protected] test]$ >log.txt 2:正常和错误重定向输出 //正常和错误都追加输出到同样地方 [[email protected] test]$ ifconfig &>>log.1 //正常输出重定向[[email protected] test]$ ifconfig >log //错误输出重定向[[email protected] test]$ ifconfig 2>log.23:命令执行控制 //休

linux shell字符串内置的常用操作(获取长度、查找、替换)

在编写shell程序时,经常会涉及到字符串相关操作.有许多命令语句,如awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,使用内部操作符会省略启动外部程序等时间,因此速度会很的快.如果内置的操作符能够做到的,优先使用内置的. 1 推断读取字符串值                                        

shell 的内置命令与外部命令的区别

shell命令通常分为两类: 内置命令(man builtins) 外部命令 下面分析两者的区别. 内置命令: 内部命令被构建在shell之中.当执行shell命令时,内部命令的执行速度非常快.这是因为没有其他的进程因为执行这条命令而被创建.比如说,当我们执行"cd"命令时,没有进程被创建.在执行过程中只是简单的改变当前的目录. 外部命令: 外部命令并没有被构建在shell中.这些可执行的外部命令保存在一个独立的文件当中.当一个外部命令被执行时,一个新的进程即被创建同时命令被执行. 通

Shell重写内置命令--cd

场景介绍 windows下使用cygwin,使用apktool重打包apk: 方式一 cd D:cd path/to/apk/in/dapktool d name.apk 方式二 将文件拖进cygwin窗口,删除尾部的文件名CTRL+Acd SPACEapktool d name.apk 方式三 `I` 将文件拖进cygwin窗口 cd SPACE `dirname ******` 方式四 直接拖文件目录至cygwin 方式Final-1 修改.bashrc:重写cd方法 function cd

Bash shell

一.认识bash shell 1.登录取得的shell就记录在/etc/passwd这个文件内 可以使用cat /etc/passwd查看 2.bash shell 功能 a. 命令记忆能力(history),默认1000个,存在~/.bash_history文件 b. 命令与文件补全功能(Tab键的好处) [Tab]接在一串命令的第一个字的后面,则为命令补全 [Tab]接在一串命令的第二个字以后时,则为文件补齐. c. 命令别名设置功能(alias), alias lm='ls -al' d.

Bash shell基本操作命令和环境变量命令(笔记)

一.Bash Shell 的基本操作命令 1.type:查看命令是否是bash shell 的内置命令 type cd 2.echo :变量的显示 echo $变量 echo name 3.unset :取消刚才设置的变量 unset name 4.env 或者set 命令查看环境变量 5.export 自定义变量转成环境变量 export 变量名 6.read 变量键盘读取 read [-pt] variable 7.declare/typeset 声明变量的类型 declare [-aixr