看板 Linux 關於我們 聯絡資訊
※ 引述《chan15 (ChaN)》之銘言: : 如果自行抓取檔案回來 make install : 通常有一個動作是要 ./configure : 我朋友跟我說這樣等同於 sh configure : 為什麼一般的 tutorial 都要用 ./ 呢? : 有什麼差別嗎? . 代表「當下目錄」 所以 ./configure 代表執行當下目錄中的 configure 這個檔案 sh 是一個 shell 程式 所以 sh configure 代表以 sh 執行 configure 這個檔案 對於後者(sh [file])而言, 後面的 [file] 必須是一個 shell script Shell script 就是一堆文字, 裡面記載者你希望它被解譯時會發生什麼事情 sh 程式負責解譯該 script 的內容, 產生相對應的行為 前者則是執行一個程式的語法 如同 sh [file] 語法中的 sh 一樣, 在這個語法中 configure 被視為一個可執行檔 在 Linux 裡, 只要被標示為可執行檔, 即使是文字檔也可以直接當程式來跑 所以在這個狀況中, 雖然 configure 本身只是一堆文字, 但也會被執行 Linux 會自動判讀(也可以明文指定)該檔案的內容, 以適當的方式執行它 在這個例子中, 當你執行 configure 時, Linux 就會自動呼叫 sh 因此得到的結果就會和 sh configure 一樣 那麼為什麼要寫出 ./ 呢? 這是因為由於方便起見, shell 程式會自動在你輸入執行檔時搜尋該檔案位置 這樣你就不用每次都明文指定該執行檔的位置, 而只要打執行檔名稱就好了 例如大家都很常用的 ls, 就是被放在 /bin/ls 這個位置 但是不用每次打 /bin/ls 才能使用, 只要打 ls, shell 會負責幫你找到正確位置 Shell 尋找正確位置的依據則是你的 PATH 環境變數 如果你輸入 echo $PATH 就可以看到你的系統上這個環境變數的值 這個變數中列出所有 shell 用來找執行檔位置的路徑, 其間以冒號分隔 可以看到其中有個路徑是 /bin, 所以當你輸入 ls, shell 就可以找到 /bin/ls 可是你也可以看到, 這些路徑中並沒有包含 .(你目前所處的目錄) 所以如果你只輸入 configure, shell 會到處去找這個程式...然後找不到 因此, 當你想把 configre 直接視為執行檔執行時 必須明確指明你想執行「這個目錄下的 configure 檔」 亦即輸入 ./configure 所以其實這兩個指令代表的意思不太一樣 也不能說 sh 和 ./ 有對等關係 只是剛好在這個例子中, 兩個指令的效果相同而已 順帶一題, 如果你想瞭解如何把一個普通檔案變成可執行的檔案 則可以參考鳥哥的檔案權限教學 http://linux.vbird.org/linux_basic/0210filepermission.php -- "問おう、貴方が私のマスターか?" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146 ※ 編輯: uranusjr 來自: 114.32.81.146 (08/30 04:02)
Lee1027:很清楚 09/05 00:04