gpt4 book ai didi

unix - 以 ./script.sh 和 sh script.sh 运行 shell 脚本有什么区别

转载 作者:行者123 更新时间:2023-12-03 13:29:50 34 4
gpt4 key购买 nike

我有一个看起来像这样的脚本

#!/bin/bash

function something() {
echo "hello world!!"
}

something | tee logfile

我已经在这个文件上设置了执行权限,当我尝试像这样运行文件时
 $./script.sh

它运行得很好,但是当我像这样在命令行上运行它时
$sh script.sh 

它抛出一个错误。为什么会发生这种情况以及我可以通过哪些方式解决此问题。

最佳答案

./script.sh 运行它将使内核读取第一行(shebang),然后调用 bash 来解释脚本。以 sh script.sh 运行它使用系统默认的任何 shell sh to(在 Ubuntu 上这是 Dash,它与 sh 兼容,但不支持 Bash 的一些额外功能)。

您可以通过调用它来修复它 bash script.sh ,或者如果是您的机器,您可以更改 /bin/sh成为 bash 而不是现在的任何东西(通常只是通过符号链接(symbolic link) - rm /bin/sh && ln -s /bin/bash /bin/sh )。或者您可以使用 ./script.sh相反,如果那已经起作用了;)

如果你的 shell 确实是 dash 并且你想修改脚本使其兼容,https://wiki.ubuntu.com/DashAsBinSh有一个有用的差异指南。在您的示例中,您似乎只需要删除 function 关键字。

关于unix - 以 ./script.sh 和 sh script.sh 运行 shell 脚本有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468132/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com