Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash:在带有curl的Bash脚本中“!/bin/sh”的效果是什么_Bash_Curl - Fatal编程技术网

Bash:在带有curl的Bash脚本中“!/bin/sh”的效果是什么

Bash:在带有curl的Bash脚本中“!/bin/sh”的效果是什么,bash,curl,Bash,Curl,为了成功登录网站,我使用了一个复杂而长的命令行。如果我在控制台中执行它,它就会工作。但是,如果我在bash脚本中复制并粘贴同一行,它将不起作用 我试了很多东西,但不小心发现如果我不使用这条线 #!/bin/sh 成功了!为什么我的mac OSX Lion会出现这种情况?这个配置行在bash脚本中做什么?/bin/sh是确保使用正确的解释器运行脚本的常用习惯用法。这里,sh是伯恩贝壳。一个好的、标准的shell脚本最小公分母 然而,就你而言/bin/sh似乎是错误的翻译 这里有更多的信息: 最初

为了成功登录网站,我使用了一个复杂而长的命令行。如果我在控制台中执行它,它就会工作。但是,如果我在bash脚本中复制并粘贴同一行,它将不起作用

我试了很多东西,但不小心发现如果我不使用这条线

#!/bin/sh

成功了!为什么我的mac OSX Lion会出现这种情况?这个配置行在bash脚本中做什么?

/bin/sh是确保使用正确的解释器运行脚本的常用习惯用法。这里,sh是伯恩贝壳。一个好的、标准的shell脚本最小公分母

然而,就你而言/bin/sh似乎是错误的翻译

这里有更多的信息:

最初,我们在unix上只有一个shell。当你要求运行一个 命令时,shell将尝试调用一个exec系统 我打电话给它。如果命令是一个可执行文件,那么exec就会成功 命令将运行。如果exec失败,shell将无法运行 放弃,它将尝试对命令文件进行interpet,就像 这是一个shell脚本

然后unix得到了更多的shell,情况变得混乱起来。最 人们会在一个shell中编写脚本,在另一个shell中键入命令。 每个shell都有不同的规则,用于将脚本提供给 翻译

这就是这个把戏是发明出来的。这个想法是让 内核的exec系统调用通过shell脚本成功。当 内核试图执行一个文件,它会查看 表示一个称为幻数的整数。这会告诉内核 它是否应该尝试运行该文件。所以!/被添加到魔法中 内核知道的数字,并且扩展到实际能够 自行运行shell脚本。但是有些人不会打字, 他们不停地把空间留着。因此,内核又被执行了一次 允许!/作为一个特殊的3字节幻数工作

所以/usr/bin/ksh和 !/usr/bin/ksh现在的意思是相同的。我总是使用前者,因为至少有些内核可能仍然存在,不理解 后者

请注意,第一行是发送给内核的信号,而不是发送给 壳现在发生的情况是,当shell尝试通过 他们只是成功了。我们从来没有遇到过他们的各种各样的问题 后备方案


!/bin/sh是确保使用正确的解释器运行脚本的常用习惯用法。这里,sh是伯恩贝壳。一个好的、标准的shell脚本最小公分母

然而,就你而言/bin/sh似乎是错误的翻译

这里有更多的信息:

最初,我们在unix上只有一个shell。当你要求运行一个 命令时,shell将尝试调用一个exec系统 我打电话给它。如果命令是一个可执行文件,那么exec就会成功 命令将运行。如果exec失败,shell将无法运行 放弃,它将尝试对命令文件进行interpet,就像 这是一个shell脚本

然后unix得到了更多的shell,情况变得混乱起来。最 人们会在一个shell中编写脚本,在另一个shell中键入命令。 每个shell都有不同的规则,用于将脚本提供给 翻译

这就是这个把戏是发明出来的。这个想法是让 内核的exec系统调用通过shell脚本成功。当 内核试图执行一个文件,它会查看 表示一个称为幻数的整数。这会告诉内核 它是否应该尝试运行该文件。所以!/被添加到魔法中 内核知道的数字,并且扩展到实际能够 自行运行shell脚本。但是有些人不会打字, 他们不停地把空间留着。因此,内核又被执行了一次 允许!/作为一个特殊的3字节幻数工作

所以/usr/bin/ksh和 !/usr/bin/ksh现在的意思是相同的。我总是使用前者,因为至少有些内核可能仍然存在,不理解 后者

请注意,第一行是发送给内核的信号,而不是发送给 壳现在发生的情况是,当shell尝试通过 他们只是成功了。我们从来没有遇到过他们的各种各样的问题 后备方案


通过/bin/sh运行的bash脚本在sh兼容模式下运行,这意味着许多bash特有的特性字符串、进程替换等将无法工作


如果希望能够使用完整的bash语法,请使用/bin/bash作为您的shebang行。

通过/bin/sh运行的bash脚本在sh兼容模式下运行,这意味着许多bash特有的特性字符串、进程替换等将无法工作


如果希望能够使用完整的bash语法,请使用/bin/bash作为shebang行。

脚本的第一行可用于选择要使用的脚本解释器

您正在告诉shell调用 /bin/bash解释器来执行脚本。
确保之前没有空格或空行/bin/bash,否则它将无法工作。

可以使用脚本的第一行来选择要使用的脚本解释器

您告诉shell调用/bin/bash解释器来执行脚本。
确保之前没有空格或空行/bin/bash或它将不起作用。

bash手册列出了当bash作为sh调用时会发生什么:bash手册列出了当bash作为sh调用时会发生什么:例如,在Ubuntu上,/bin/sh根本不运行bash,而是运行dash。例如,在Ubuntu上,/bin/sh根本不运行bash,而是运行dash。
sh-4.2$ cat < <(echo 123)
sh: syntax error near unexpected token `<'
#!/bin/bash