Linux跑脚本用sh和./有什么区别?
在 Linux 的世界里,脚本运行是一个非常常见的操作。而对于初学者来说,在命令行中执行脚本时可能会遇到两种不同的方式:使用 sh 命令或直接使用 ./ 运行。
那么,这两种方式究竟有何区别呢?
第一我们需要知道,在 Linux 中,所有的文件都必须具备可执行权限才能被系统执行。因此,在运行一个脚本之前,你需要确保它已经被赋予了可执行权限。
通常情况下,我们可以通过 chmod 命令改变文件的权限:
```
chmod +x script.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 的世界里,脚本运行是一项非常基础的操作。因此,在学习这个过程中,请务必注意保持耐心、深入思考,并积极尝试各种方法来找到最佳解决方案。