这放命令in.Linux.激活或清除Bash shell环境中的特定标志或设置。
其他shell使用不同的设置局部变量方法。
使用set命令
SET命令允许您在BASH中控制某些标志和功能以确定脚本的行为。这些控件有助于确保您的脚本遵循预期的路径,并且Bash中的某些怪癖不会变成问题。
从简单的东西开始。假设您想要禁用Bash的覆盖文件的默认行为“-c”标志将阻止它。
例如,执行:
设置-c.
配置Bash在使用输出重定向时不覆盖现有文件>那>, 和<>被重定向到文件。默认情况下,Bash允许重定向输出覆盖现有文件。
如您所见,会出现一条消息,让您知道文件不能被覆盖。这在调试脚本时特别有用,并且您不希望意外地丢失现有数据。
接下来,您可能希望禁用自动文件名生成,更常见称为“Globbing”。Globbing可以在查找文件中超级有用,但如果流氓字符最终在脚本中的错误位置最终会导致一些严重问题。'-f'标志禁用它。
设置-f.
然后,你可以尝试这样运行:
ls *
通常,您可以看到一堆文件和文件夹倾倒在屏幕上,但现在,您只会收到一条消息,让您知道没有这样的目录。
在调试脚本时,您可能不希望部分功能的脚本继续运行,从而造成破坏或产生不正确的结果。当出现错误时,可以启用'-e'标志来立即停止脚本。
set -e.
在类似的备注上,SET命令还允许您查看脚本中的哪个命令被执行,然后是结果。这使您可以更准确地调试您的脚本所在的实时读数以及每个命令的结果是什么。这种超级有用的功能来自'-x'标志。
set -x.
您可以用一个简单的while循环来尝试它,以查看每个迭代。
x = 10.
虽然[$ x -gt 0];做
x = $ [$ x-1]
回声$ X.
睡2个
完成
请注意它是如何发挥的。您将获得每行的直接打印。然后,Bash将运行该行,并为您提供任何一个版本,如果有的话,然后移动到下一行。调试脚本时,此方法可以是一个大量的节省者。
如果您一直在关注,您可能会注意到使用Set命令带来的更改似乎是永久性的。他们不是。在任何标志之前都使用加号(+)来禁用它们。
设置+ X.
有关SET命令如何运行和启用它可以执行的更多信息,您可以始终运行:
set - help.
有关配置BASH的内置变量的更广泛的建议,请查看Bash Manual的说明放。