#!是一個特殊符號,/bin/sh是用來解釋該腳本的的shell路徑
#!/bin/sh指該腳本使用/bin/sh來執行
sh只是其中一種解釋方式,通過如下命令可以查到支持的shell解釋方式:
xx@xxx$ sudo cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/bash /bin/rbash /bin/dash
區別在於當用sh解釋時,當source命令執行有問題時,sh不再往下執行;
但用bash時,bash會繼續執行之后的命令。
當沒有加#!+shell解釋器時,腳本會默認當前用戶登錄的shell為腳本解釋器,通常為bash
在終端下要執行一個可執行文件,直接輸入它的文件名+路徑就好了。
之前一直看到輸入比如./test,用於執行當前目錄下的test文件,一直以為./是執行指令。
現在才知道原來./test的./是為了承接現在所在的文件夾,讓現在所在的文件夾+文件,合並成該文件的完整路徑,用於執行。
如果非要在執行命令前加上一些指令用於執行,那就只能是bash/sh
ly@ubuntu:~/Desktop/sutest$ ./test fail to read: Permission denied ly@ubuntu:~/Desktop/sutest$ test ly@ubuntu:~/Desktop/sutest$ which test //因為這里執行的是/usr/bin/test,所以不會有當前路徑下的test的正確輸出 /usr/bin/test