微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dot 命令在不同 shell 中的行为是否一致?

如何解决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 举报,一经查实,本站将立刻删除。