如何解决dot 命令在不同 shell 中的行为是否一致?
您可以使用 .
命令从 shell 脚本执行命令,就像它们在调用 shell 脚本本身中一样。
如果我在我的 shell 脚本中使用 dot 命令,它在不同的 shell 解释器中的行为是否相似?
请注意:我不是询问 .
命令和 source
命令之间的区别。如果这就是您想了解的内容,请参阅另一个问题:Using dot or "source" while calling another script - what is the difference?
解决方法
在某些简单的 shell 下,点运算符不符合预期:
$ /bin/sh --help
BusyBox v1.32.1 () multi-call binary.
$ cat /tmp/dot-sh.sh
#!/bin/sh
. xxx || echo "dot worked as expected"
$ /tmp/dot-sh.sh
/tmp/dot-sh.sh: 2: .: xxx: not found
要测试上面的示例,您可以:
docker run --rm -it alpine sh
但在 /bin/bash
下,点运算符确实表现得如预期:
$ cat /tmp/dot-bash.sh
#!/bin/bash
. xxx || echo "dot worked as expected"
$ /tmp/dot-bash.sh
/tmp/dot-bash.sh: line 2: xxx: No such file or directory
dot worked as expected
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。