作者 主題: path 的疑惑  (閱讀 2344 次)

0 會員 與 1 訪客 正在閱讀本文。

fedora

  • 憂鬱的高中生
  • ***
  • 文章數: 99
    • 檢視個人資料
path 的疑惑
« 於: 2011-07-17 19:56 »
想請教一個簡單的問題,但一直想不通,像平常於命令列上的檔案目錄,必須指定其相對或絕對路徑方可,比如
/ $ cd var

那現在我寫了一支程式名叫 myprgm.sh,存放在 /tmp 目錄中,此時執行如下是ok的
/tmp $ ./myprgm.sh
/tmp $ /tmp/myprgm.sh

但如果執行如下就不行:
/tmp $ myprgm.sh

想問的是,上面這種程式路徑的表示法,不就是相對路徑嗎,既然 cd var 可以,那為何系統會回應找不到指令的錯誤訊息呢?

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: path 的疑惑
« 回覆 #1 於: 2011-07-17 20:35 »
想請教一個簡單的問題,但一直想不通,像平常於命令列上的檔案目錄,必須指定其相對或絕對路徑方可,比如
/ $ cd var

那現在我寫了一支程式名叫 myprgm.sh,存放在 /tmp 目錄中,此時執行如下是ok的
/tmp $ ./myprgm.sh
/tmp $ /tmp/myprgm.sh

但如果執行如下就不行:
/tmp $ myprgm.sh

想問的是,上面這種程式路徑的表示法,不就是相對路徑嗎,既然 cd var 可以,那為何系統會回應找不到指令的錯誤訊息呢?

未指定路徑時, shell 會到 $PATH 指定的路徑下搜尋要執行的指令檔
$PATH 預設並未包含有 ./ 路徑, 所以當然就回應找不到指令  :D

fedora

  • 憂鬱的高中生
  • ***
  • 文章數: 99
    • 檢視個人資料
Re: path 的疑惑
« 回覆 #2 於: 2011-07-17 21:29 »
甘溫,了解了,謝謝大大。

特級大肉腳

  • 憂鬱的高中生
  • ***
  • 文章數: 113
    • 檢視個人資料
Re: path 的疑惑
« 回覆 #3 於: 2011-07-20 09:33 »
你可以看目前的預設路徑包含哪些目錄:
/ $ echo $PATH
若你想加/tmp進去的話:
/ $ export PATH=$PATH:/tmp

甘溫,了解了,謝謝大大。