sh -x 和 ./ 脚本执行的区别

Gau*_*bhu 6 scripting bash shell-script

所以我有一个简单的shell脚本。这两个命令在执行中有什么区别?有没有首选的方法?

$sh -x foobar.sh

或者

$ ./foobar.sh

我发现脚本与第二个命令一起使用时执行速度较慢。

fin*_*een 8

./foobar.sh文件通过使用#!第一行中的任何内容运行它来启动。如果此行读取,#!/bin/sh -x则它将与sh -x foobar.sh情况相同(假设 sh 是/bin/sh从 PATH解析的)。也许它不是由sh但是开始的bash

-x标志打印调试信息,即在执行之前的每个命令。


dha*_*hag 1

第一个版本,显式调用sh将使用 sh 运行脚本(根据 的要求显示跟踪语句-x)。第二个没有指定显式解释器,将尊重 shebang 行(如果有),或者默认为您当前正在运行的 shell。

例如,如果您的脚本有一个 shebang 行#! /bin/bash,或者您的 shell 是 bash,那么第二种形式./script将导致执行运行 bash 而不是 sh。由于 bash 是比 sh 功能更齐全的 shell,因此它可能具有不同的性能特征。