如何在 upstart 配置文件中使用 shopt 命令?

如何在 upstart 配置文件中使用 shopt 命令?

我正在尝试创建一个 upstart 配置文件,在脚本部分中我使用 shopt 命令来设置 nullglob 参数 -

shopt -s nullglob

然而,我得到了以下错误-

/proc/self/fd/9: 8: /proc/self/fd/9: shopt: not found

我们可以在 upstart 脚本中使用 shopt 吗?有人用过吗?另外,由于 shopt 是内置命令,我找不到可以在脚本中包含的确切路径,以便从那里执行 shopt。任何指点都将不胜感激。

仅供参考-我正在使用 Ubuntu。

我可以从命令行和 shell 脚本中使用 shopt。但是只有在 upstart 配置文件中使用它时才会遇到此问题。

谢谢!

答案1

感谢您的评论,它帮助我解决了实际问题。正如steeldriver提到的,它shopt是一个bash内置函数,由于默认upstart使用/bin/sh并且它与符号链接dash,因此shopt无法正常工作。

另外,有效的脚本shopt是一个 bash 脚本(希望它能回答 bodho.zazen 的问题)。

经过一番研究,我所做的就是将我的shopt命令像这样包含在脚本部分中,并且这有效 -

script 

/bin/bash <<'EOF'
  <my-code>
  shopt -s nullglob
  <my-code>
EOF

end script

感谢大家帮助我!:)

相关内容