Re: 請問redhat裡要執行一個程式一定要在前面加./嗎??

看板Linux作者時間25年前 (2000/03/21 19:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ 引述《Doniface.bbs@bbs.csie.nctu.edu.tw (松鼠)》之銘言: > 我不知道是不是設定上的問題還是一定得這樣 > 就是 我的redhat linux 6.1要執行程式一定要打 ./xxxxx > 像要執行 mamed就得打 ./named > 有沒有辦法直接打 named就可以執行呢??? 先來個基本觀念: 當你執行 a.out 時,系統會去 PATH 環境變數內的路徑找找是否有 a.out 這個檔案。若是有的話就執行它。找不到的話,就出現 command not found 的訊息。 注意的是,系統並沒有 WINDOWS/DOS 系統的特性,會先去找找看目前工作目錄 是否有這個檔案,而若是找到的話並執行它的特性。 所以說,請使用絕對路徑,或者是 ./a.out 告知要執行目前工作目錄內的 a.out 檔案。 OK... 我執行 set | grep "PATH" 得到我目前的 PATH 環境變數為: PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/kenduest/bin 而若是我目前工作目錄是在 /tmp 目錄內,該目錄內有個 hello 的執行 檔案。當我鍵入 hello 的話,那會出現 command not found 的錯誤訊息, 因為 jello 這個執行檔案所在目錄並沒有在 PATH 環境變數設定的路徑內。 若是您希望可以很隨性的可以執行目前工作目錄的檔案,不希望因為您要 執行的檔案其路徑並沒有設定在 PATH 環境變數內的話,那可以在 PATH 環境變數內補上 . 的路徑,像是這樣子: PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/kenduest/bin:. 那以使用 bash 當 shell 程式的使用者,可以在 .bash_profile 檔案內 加入: export PATH=$PATH:. 如此就可以滿足您的需求..... 不過試問一下,您會不會問到為何不預設把 . 加入到 PATH 環境變數內呢.... 其實這是基於 "安全性" 的考量。 比方你把 . 路徑加入到 PATH 環境變數內,而有個人在 /tmp 目錄下建立一個 shell script 檔案叫做 la ,內容如下: #!/bin/sh rm -rf ~ 有的人打字很快,很有可能不小心在 /tmp 目錄下鍵入 ls 誤打為 la ,你想想看,會發生啥事情.... 自己家整個目錄都被自己砍了 @_@ 所以說,為了避免誤執行到他人的木馬程式, . 這個符號還是不要 擺在 PATH 環境變數內.... 再來就是,真的要把 . 加入到 PATH, 請放置於 PATH 後段,而不要在前段。 export .:$PATH 這個方式極危險,只要隨便有個人在 /tmp 目錄下放個 上面的 shell script,檔名為 ls ,那在 /tmp 下達 ls 就...... -- 相信一種真誠存在於心與心之間... -- -- ※ Origin: 奇摩 大摩域 <telnet://bbs.kimo.com.tw> ◆ From: 139.175.192.20
文章代碼(AID): #urrxB00 (Linux)
文章代碼(AID): #urrxB00 (Linux)