在電腦科學中,Shell俗稱殼(用來區別於核),是指“提供使用者使用介面”的軟體(命令解析器)。它類似於DOS下的command.com和後來的cmd.exe。它接收使用者命令,然後呼叫相應的應用程式。
為什麼要講解這個
因為剛好看到這個,且只是濛濛懂,不想遺忘這個細小知識點,雖然大部分人一看都明白,但還是記下來
一、python 指令碼 樣例
-
常見的python 檔案頭部指令碼
#!/usr/local/bin/python3
-
首先解釋一下含義
1. # shell 指令碼中單獨使用代表 註釋 2. #! 組合使用表示 要用在 shell 指令碼中 3. /usr/local/bin/python3 代表 該指令碼所執行的環境是python3 不是py2
- 引入的目的:
1. 如果 呼叫 python 指令碼時(在終端命令執行),使用的是 `python3 script.py`
看一張圖:
當使用 $PATH 下的 python3 時,**#!/usr/local/bin/python3** 此時會被忽略,相當於註釋
-
如果 直接呼叫python 指令碼
**./my-first-script.py** 會提示 Permissions Deny 許可權拒絕 執行: `chmod a+x my-first-script.py` 將檔案切換成可執行 x 許可權 a : all u : user g : group x : exec 可執行 此時我們所看到的是可以正常輸出的 在Mac 和Linux 上 會使用我們指定的解析器進行解析 指令碼檔案 這也就是為什麼我們能夠 使用 shell 指令碼的原因
-
二、使用PHP env 環境
-
如果一個shell 指令碼是 php 檔案,通常我們可以看到檔案的頭部會有如下形式的程式碼
#!/usr/bin/env php <?php define('LARAVEL_START', microtime(true)); exit($status);
-
首先解釋一下
#!/usr/bin/env php
1 . env 是Mac 或者 Linux 系統的環境變數, 是一個可執行命令 2 . env php : 指的是 php 版本 使用當前 env 環境內的 配置的 Path 路徑下的 php 版本 3 . 當前指令碼在執行shell 時,會自動從env 內呼叫合適的直譯器執行
-
目的:
- 對於php 和 python 我們通常會在一個環境上安裝兩種不同的版本
-
e.g: python2 python3 php5 php7
- 為了能夠解析當前指令碼檔案,該命令會自動從當前env 環境中查詢配置的版本
三、總結:
-
無論那種寫法,最終都是要讓我們的指令碼執行起來,前提是我們必須安裝對應的直譯器,配置到環境 變數中方能生效
注意點:
- 總結:
- 注意點
1. 我們從頭到尾都沒有提 <Windows> 環境,win 環境 執行檔案 大部分是依據其檔案的字尾進行識別的, 2. 在windows下無論在程式碼里加什麼都無法直接執行指令碼,因為在windows下檔名對檔案的開啟方式起了決定性作用。
- 注意點
鳴謝: 在這裡非常感謝@Mitoop