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