Linux启动脚本内里的#!/bin/sh是什么意思?为什么是#!

打印 上一主题 下一主题

主题 836|帖子 836|积分 2508

#!/bin/sh 是一个在 Unix 和类 Unix 操作系统(如 Linux)中常见的 shebang(或称为 hashbang)行。它的作用是告诉操作系统该脚本应该使用哪个表明器来执行。
表明:


  • #!:这个符号组合称为 “shebang”。它的存在表明接下来的字符将指定表明器的路径。
  • /bin/sh:这是要使用的表明器的完整路径。sh 是 Bourne shell 的简称,通常是系统中一种最基本的 shell。它是用于执行 shell 脚本的程序。
功能:

当你实验执行一个包含 #!/bin/sh 的脚本时,系统会查找 /bin/sh 这个可执行文件,并用它来运行脚本中的代码。这种机制允许你写出可以在不同环境中更机动地运行的脚本,由于你可以选择不同的表明器,例如 bash、python 等。
示例:

如果你有一个名为 myscript.sh 的脚本,且开头是 #!/bin/sh,你可以通过以下下令来运行它:
  1. ./myscript.sh
复制代码
系统会主动使用 /bin/sh 来执行这个脚本。确保脚本具有可执行权限(可以使用 chmod +x myscript.sh 来赋予可执行权限)。
其他表明器:



  • #!/bin/bash:指定使用 Bash shell。
  • #!/usr/bin/env python3:指定使用 Python 3 表明器,通常会更具可移植性,由于它会主动查找 Python 表明器的路径。
  • #!/usr/bin/perl:指定使用 Perl 表明器。
总之,shebang 行是在脚本中指定表明器的标准方式,使得脚本在不同的环境中能正确执行。
/bin/sh和/bin/bash的异同点

/bin/sh 和 /bin/bash 都是 Unix/Linux 系统中的 shell 程序,但它们之间有一些重要的异同点。以下是它们的主要特点和区别:
共同点:


  • 下令行表明器:两者都是下令行表明器,用于执行下令和脚本。
  • 脚本功能:都可以用来编写和执行 shell 脚本,支持变量、条件语句、循环等基本编程结构。
  • 交互使用:都可以在下令行中交互使用,接受用户输入并执行下令。
不同点:


  • 功能和特性

    • /bin/sh:通常是一个较为基础的 shell,主要遵照 POSIX 标准,支持的功能比力有限。不同的 Unix/Linux 发行版中,sh 可能会指向不同的 shell(如 dash、bash 等)。
    • /bin/bash:Bash(Bourne Again SHell)是一个功能丰富的 shell,提供了许多加强功能,如下令补全、汗青记录、数组、扩展的字符串操作等。

  • 语法差异

    • Bash 支持更多的语法和扩展,如 [[ ... ]] 条件测试、(( ... )) 算术扩展等,而基本的 sh 可能只支持 [...] 情势。
    • Bash 还支持更先进的数组处理和参数扩展。

  • 兼容性

    • /bin/sh 旨在确保脚本在不同的 Unix 系统上具有良好的兼容性,通常得当于编写跨平台的脚本。
    • Bash 提供了向后兼容性,能够执行大多数 sh 脚本,但可能包含一些 sh 不支持的功能。

  • 启动和性能

    • sh 通常会比 bash 启动更快,得当于那些只需要基本功能的环境。
    • 在某些环境下,特定的 Linux 系统可能会使用更轻量级的 shell(如 dash)作为 /bin/sh 的实现,以进步性能。

总结:



  • 使用 /bin/sh 编写的脚本通常更具可移植性,得当于需要在不同环境中运行的基础操作。
  • 使用 /bin/bash 时,你可以利用其丰富的功能和加强特性,得当于需要更复杂操作的脚本。
选择使用哪个 shell 主要取决于你的需求和环境。如果你的脚本需要特定的功能,使用 bash 会更合适;如果需要确保通用性和兼容性,使用 sh 将是更安全的选择。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表