sh script.sh和./script.sh的区别

  • sh script.sh 是使用系统上的默认Shell解释器来执行脚本文件,忽略脚本中的 shebang 行(例如 #!/usr/bin/expect -f)。

    一般在 Linux 系统中,默认的 /usr/bin/sh 默认指向 /usr/bin/bash 的符号链接。

  • ./script.sh 是通过脚本中的 shebang 行(一般都是 #! 开头的第一行)指定的解释器来运行脚本。

指定解释器执行shell脚本的方式

假设希望指定 expect 解释器执行脚本,方式如下:

  1. 在 shell 脚本中的 shebang 行(第一行)指定解释器。

    1
    #!/usr/bin/expect -f

    使用 ./script.sh 的方式运行脚本即可。

  2. 使用 expect 命令来执行脚本,这种方式是直接指定 expect 解释器来执行脚本,忽略脚本中的 shebang 行。

    1
    expect script.sh