Shell腳本第一行


何為Shell腳本:

(1)為實現某個任務,將許多命令組合后,寫入一個可執行的文本文件的方法,稱為Shell腳本編程。

(2)Shell 腳本其實就是文本文件,建立新的腳本文件時,可以使用Vi、Emacs等文本編輯器。

(3)Shell腳本通常不需要特殊處理,對腳本文件加上可執行權限,就可以像應用程序一樣執行;

(4)Shell腳本分許多類型,最常見的是應用於Bash和Tcsh的腳本。通常Bash腳本文件名以sh結尾,Tcsh腳本文件以csh結尾

  通俗地講,shell腳本就是寫有一堆系統命令+簡單的shell語法(變量、if判斷、循環語句等)的一個文件,執行這文件能把所有命令一次性都執行了並實現一定的目的。

 

Shell第一行:

 

  • 它不是注釋,"#!/bin/sh"是對shell的聲明,說明你所用的是那種類型的shell及其路徑所在;
  • 告訴操作系統, 此腳本的解釋器為 /bin/sh 這個可執行文件
    類似地, 如果你的腳本用 bash, ksh, 解釋, 第一行就應該是
    #!/bin/bash
    #!/bin/ksh
    之類的

    或者, 你自己定義一種腳本語言, 再自己寫個解釋器去執行它, 比如說叫 xshell, 放在 /usr/local/bin 下, 你的腳本第一行就應該是
    #!/usr/local/bin/xshell

    如果沒有這樣定義的第一行, 不同 unix 類操作系統會用默認 shell 來解釋腳本, 如 unix 往往是 sh, linux 往往是用 bash, ....
  • 當Shell執行一個程序時,會要求內核啟動一個新的進程(process),以便在該進程里執行所指定的程序。內核知道如何為編譯型程序做這件事。比如sh.sh文件可以執行,但是不是編譯程序。

當Shell要求內核執行它時,內核無法完成這一要求,並回應“不是可執行的格式文件”提示信息。Shell收到此錯誤信息的時候,會判斷不是編譯程序,那么一定是Shell腳本,因此會執行一個新的Shell副本來執行該程序,這也就是Shell執行的過程。

在unix中為/bin/sh 在linux一般為/bin/bash 這個你懂的!!!

然而,一般的unix/linux系統一般都不止一個shell 比如ksh、csh、bash(學習中).....如果在系統中提供一種方式來解釋Shell執行,那不是很棒?因此,在一般的Shell腳本中會添加第一行為#!/bin/*sh的字符 比如:csh的腳本  #!/bin/csh -f 意思就是這是一個csh

在書中講到了#!這一行的長度是有限制的 從63到1024個字符都有,進來不要超過 64個。

腳本是否具有可移植性,取決於是否具有完整的路徑名稱。

另外,在選項之后盡量不要放置任何的空白,因為空白也會跟着選項一起傳遞給引用程序。

Shell編寫者應該清楚解釋器的完整路徑名稱。因為不同的系統會放在不同的位置。(例如/bin/awk和/usr/bin/awk)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM