在shell脚本中禁用globbing的范围

qzwqbdag  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(121)

我想知道shell脚本中“set”命令的作用域是什么。是否仅限于剧本本身?或者如果通过交互式shell运行,则仅限于该特定示例?
具体来说,我试图禁用globbing,执行一些命令,并再次启用它

#Disable Globbing
set -o noglob

#Run some cmd's

#Enable Globbing again
set +o noglob

那么,如果其他人登录到服务器上,并试图在我的脚本运行时做一些事情,他们会受到暂时禁用的“noglob”的影响吗?
PS:我确实了解引用变量的最佳实践,但仍然想知道设置noglob的影响。
谢谢

tyky79it

tyky79it1#

虽然shell是一个应用程序,像Firefox或Libre Office Writer,set -o noglob是一种设置,但处理方式不同。set -o noglob设置未存储到应用程序的配置文件中;它只是影响正在运行shell示例的易失性运行时更改。
对shell行为的永久配置更改必须手动记录在启动脚本中。例如,GNU Bash在交互式运行时,将读取主目录中名为.bashrc的文件。如果将set -o noglob放入该文件中,则该设置将在每个新的Bash示例中生效。其他用户不会受到影响,因为当他们运行Bash时,它会读取他们自己的.bashrc
/etc中有全局文件,您可以在其中进行影响所有用户的更改。要编辑这些内容,您需要超级用户权限。
像网络浏览器和文字处理器这样的应用程序可以为你做到这一点;当你在他们的首选项中改变一些东西时,他们会让那个设置在程序的那个示例中“激活”**,**他们会把它记录到一些配置文件或数据库中,这样,如果程序重新启动,它就会生效。

相关问题