ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
结论一: **./xxx.sh** 的执行方式等价于 **sh ./xxx.sh** 或者 **bash ./xxx.sh** ,此三种执行脚本的方式都是重新启动一个子shell,在子shell中执行此脚本。 结论二: **source ./xxx.sh** 和 **. ./xxx.sh** 和 **. xxx.sh** 的执行方式是等价的,即三种执行方式都是在当前shell进程中执行此脚本,而不是重新启动一个shell 而在子shell进程中执行此脚本。 ***** 1. 程序必须以下面的行开始(必须方在文件的第一行): ``` #!/bin/sh ``` 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编写脚本完成时,如果要执行该脚本,还必须使其可执行。 要使编写脚本可执行: 编译 **chmod +x filename.sh** 这样才能用 **./filename.sh** 来运行 如果没有执行权限,必须使用 **sh filename.sh** 或者 **bash filename.sh**,讲白了就是sh 可以忽略文件的执行权限。 ## **运行 Shell 脚本有两种方法:** **1、作为可执行程序** 将上面的代码保存为 test.sh,并 cd 到相应目录: ~~~ chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本 ~~~ 注意,一定要写成./test.sh,而不是**test.sh**,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。 **2、作为解释器参数** 这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如: ~~~ /bin/sh test.sh /bin/php test.php ~~~