Linux跑脚本用sh和./有什么区别?

2023-12-26 23阅读
在命令行中执行脚本时可能会遇到两种不同的方式:所有的文件都必须具备可执行权限才能被系统执行。如果你已经给该文件设置了可执行权限,如果你仅仅是想运行当前目录下的某个脚本。

在 Linux 的世界里,脚本运行是一个非常常见的操作。而对于初学者来说,在命令行中执行脚本时可能会遇到两种不同的方式:使用 sh 命令或直接使用 ./ 运行。

Linux跑脚本用sh和./有什么区别?

那么,这两种方式究竟有何区别呢?

第一我们需要知道,在 Linux 中,所有的文件都必须具备可执行权限才能被系统执行。因此,在运行一个脚本之前,你需要确保它已经被赋予了可执行权限。

通常情况下,我们可以通过 chmod 命令改变文件的权限:

```

chmod +x script.sh

Linux跑脚本用sh和./有什么区别?

其中 script.sh 是你要运行的脚本文件名。

现在让我们回到正题:使用 sh 命令与直接使用 ./ 运行两个不同版本的脚本之间有何差异?

1. 使用 sh 命令

如果你想要运行一个以 .sh 结尾的 shell 脚本,并且没有给它赋予可执行权限,则可以通过以下命令来运行:

sh script.sh

当然,如果你已经给该文件设置了可执行权限,则也可以用相对路径来代替绝对路径:

sh /path/to/script.sh

值得一提的是,在调用 sh 时,你并不需要指定脚本的路径。如果你仅仅是想运行当前目录下的某个脚本,则可以直接输入:

sh ./script.sh

这种方式在使用上非常简单,但同时也有一些限制。第一,由于 sh 命令实际上是启动一个新进程来执行该命令,在一些情况下可能会影响性能。

第二,sh 命令只适用于 shell 脚本,并不能保证其他类型的脚本都能够正常运行。因此,在编写跨平台脚本时应当慎重选择。

2. 直接使用 ./ 运行

与 sh 命令相比,直接使用 ./ 运行则更加方便快捷。例如:

./script.sh

或者:

/path/to/script.sh

注意:在这里我们省略了 sh 命令,并且直接给出了文件名(或绝对路径)。这就意味着系统会试图解释该文件中的命令,并将它们作为一个独立进程来执行。

通过使用 ./ 语法来运行 shell 脚本还有另外两个优点:

- 更好地控制环境变量和参数。

- 可以避免一些安全问题。

总结

以上两种方法各有优缺点,在实际开发过程中需要根据具体情况进行选择。如果你想要运行一个 shell 脚本,并且不关心性能问题,那么使用 sh 命令是最简单的方式;而如果你希望更好地控制环境变量和参数,或者想避免一些安全风险,则直接使用 ./ 运行可能会更加合适。

在 Linux 的世界里,脚本运行是一项非常基础的操作。因此,在学习这个过程中,请务必注意保持耐心、深入思考,并积极尝试各种方法来找到最佳解决方案。

文章版权声明:除非注明,否则均为游侠云资讯原创文章,转载或复制请以超链接形式并注明出处。

目录[+]