Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 #/bin/sh和#之间有什么区别/垃圾箱/垃圾箱?_Bash_Shell_Sh - Fatal编程技术网

Bash #/bin/sh和#之间有什么区别/垃圾箱/垃圾箱?

Bash #/bin/sh和#之间有什么区别/垃圾箱/垃圾箱?,bash,shell,sh,Bash,Shell,Sh,#/bin/sh和#之间有什么区别/shell脚本文件中的bin/sh?和#/bin/bash? 我不熟悉shell脚本,我想创建一个shell脚本文件来运行代码。在Linux(和其他一些系统)上,#(称为且不带空格)是某个可执行脚本的第一行,紧接着是某个可执行文件(称为解释器)时,就可以理解它 如果您使用Linux,请阅读 空间(实际上缺少大部分空间)很重要。 您可以编写一个以#开头的可执行脚本/usr/bin/python。用于使其可执行并查看。您还可以有一些可执行脚本 在一些Linux发行

#/bin/sh
#之间有什么区别/shell脚本文件中的bin/sh?
#/bin/bash
? 我不熟悉shell脚本,我想创建一个shell脚本文件来运行代码。

在Linux(和其他一些系统)上,
#(称为且不带空格)是某个可执行脚本的第一行,紧接着是某个可执行文件(称为解释器)时,就可以理解它

如果您使用Linux,请阅读

空间(实际上缺少大部分空间)很重要。 您可以编写一个以
#开头的可执行脚本/usr/bin/python
。用于使其可执行并查看。您还可以有一些可执行脚本

在一些Linux发行版上,
/bin/sh
是对
/bin/bash
(即)的一个调用。但在其他网站上,请点击
/bin/dash
(参见网站)。解释了它们之间的一些差异

GNUBash有一个记录在案的行为。读吧

而GNUBash是。 因此您可以研究它的源代码并改进它

另外,
dash
也是开源的。您可以研究它的源代码并加以改进

然后再读一遍

请注意,
/bin/sh
记录在POSIX标准中

我最喜欢的Linux shell是。您可以尝试(用C++、开源代码编码),并设置登录shell(参见和…)< /P> 作为练习,你甚至可以自己写。你可以在里面用。另见和

通过阅读您最喜欢的shell的源代码,您肯定会学到很多东西。 某些Shell接受(请参见和…)。你可以给他们写一本

我想创建一个shell脚本文件来运行代码

为此,我建议同时使用和。但是要保持shell脚本的小规模。对于大型脚本(超过几百行),请使用比GNUBash更好的脚本

在某些情况下,会生成一个shell脚本。这种生成器的一个例子是在Linux(和其他一些系统)上的
#(称为且不带空格)是某个可执行脚本的第一行,紧接着是某个可执行文件(称为解释器)时,就可以理解它

如果您使用Linux,请阅读

空间(实际上缺少大部分空间)很重要。 您可以编写一个以
#开头的可执行脚本/usr/bin/python
。用于使其可执行并查看。您还可以有一些可执行脚本

在一些Linux发行版上,
/bin/sh
是对
/bin/bash
(即)的一个调用。但在其他网站上,请点击
/bin/dash
(参见网站)。解释了它们之间的一些差异

GNUBash有一个记录在案的行为。读吧

而GNUBash是。 因此您可以研究它的源代码并改进它

另外,
dash
也是开源的。您可以研究它的源代码并加以改进

然后再读一遍

请注意,
/bin/sh
记录在POSIX标准中

我最喜欢的Linux shell是。您可以尝试(用C++、开源代码编码),并设置登录shell(参见和…)< /P> 作为练习,你甚至可以自己写。你可以在里面用。另见和

通过阅读您最喜欢的shell的源代码,您肯定会学到很多东西。 某些Shell接受(请参见和…)。你可以给他们写一本

我想创建一个shell脚本文件来运行代码

为此,我建议同时使用和。但是要保持shell脚本的小规模。对于大型脚本(超过几百行),请使用比GNUBash更好的脚本


在某些情况下,会生成一个shell脚本。这种生成器的一个例子是。

文件中的前两个字节组成一个16位整数,称为,操作系统可以从中导出如何处理该文件。对于某些幻数,随后的字节用于进一步区分为更多细节。幻数(以十六进制书写)2321定义这是一个文本文件,可由某些语言处理器(bash、perl、m4等)执行,随后的字节表示实际使用的语言处理器。如果在ASCII表中查找2321,则它是
#

你的另外两个例子并不表示一个有效的幻数

你不需要提供#!行,因为在执行脚本时,您总是可以显式地编写如何处理它

例如,如果您有一个文件
foo
,该文件应该由bash运行,那么您可以使用(即)启动它(取决于bash在您的系统上的位置)

或者,如果希望通过路径找到bash,则

#!/usr/local/bin/env bash
并在脚本上设置可执行位

chmod u+x foo
然后通过简单地键入来调用脚本

./foo
或者不做任何准备工作,而是通过

bash ./foo
UPDATE:正如triplee所指出的,涉及
env
的解决方案最好写为

#!/usr/bin/env bash

即使您的平台上碰巧存在/usr/local/bin,因为它可以更轻松地将脚本移植到不同的主机上(
/usr/bin/env
应该存在于任何Linux或BSD设置中,包括MacOS)。

文件中的前两个字节组成一个16位整数,称为,操作系统可以从中派生如何处理此文件。对于某些幻数,随后的字节用于进一步区分为更多细节。幻数(以十六进制书写)2321定义这是一个文本文件,可由某些语言处理器(bash、perl、m4等)执行,随后的字节表示实际使用的语言处理器。如果在ASCII表中查找2321,则它是
#

你的另外两个例子
#!/usr/bin/env bash