歡迎您光臨本站 註冊首頁

執行一個程序不能運行的三個可能

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

在命令行輸入可執行程序的文件名但是程序不能運行?有三種可能性:
第一種可能性:沒有輸入正確的文件名。注意:Linux 文件名是區分大小寫的!舉個例子,輸入
「Pico」或者「PICO」並不能啟動pico 編輯器程序。
第二種可能性:程序不在預設路徑PATH 下?在Linux 和其他的Unix 下,可執行程序必須在你的
PATH 下面你才能夠運行。如果程序所在的目錄不在預設路徑下,你可以進入到程序所在的目錄:
cd the_program_directory (the_program_directory 是程序所在的目錄名)
./program_name (program_name 是程序的文件名)
或者你可以輸入程序完整的路徑名如下:
/the_program_directory/./program_name
注意,必須在程序名前面加上點「.」和斜杠「/」才能夠正確運行。這是Linux 的另外一個安全特
性,可以使「特洛伊木馬程序」更難於入侵。點「.」指的是當前目錄,斜杠「/」是文件和目錄之
間的間隔符(DOS 用的是反斜杠「\」)。
可以用一下命令來檢查一下預設路徑:
echo $PATH
如果忘記了可執行程序的文件放在哪一個目錄下面了,可以用以下命令查找:
find / -name 「netscape」
以上命令從根目錄「/」開始查找文件名叫「netscape」的程序。用這個命令可能速度更快一些:
locate netscape
(locate 命令運行速度更快是因為它依賴於系統預先建立的文件資料庫。這個資料庫由一個在背景
運行的程序cron 來建立。因為cron 一般安排在夜間運行,所有如果你經常在夜晚關機,就不要依
賴locate 可以找到你要的文件,也不要巴望locate 可以找到剛剛才安裝的軟體名稱)
請注意,PATH 對於超級用戶root 和普通用戶一般來說是不相同的。超級用戶root 的PATH 包括
/sbin 和/usr/sbin,而普通用戶一般不包括。所以,普通用戶不能執行在/sbin 下面的文件,除非他們指定程序的全路徑名(目錄加文件名)。還有,如果你是使用su 命令從普通用戶變成超級用
戶root 的,因為繼承了普通用戶的預設路徑PATH,要執行/sbin 目錄下的文件,還是要指定程序
的全路徑名。
如果你知道程序的名字但是不知道程序的全路徑名,可以用以下命令:
which netscape
就可以找到所有叫做netscape 的文件的全路徑名
第三種可能:程序可能是不可執行的。如果是這個原因,把它改成可以執行的(必須是超級用戶
root 或者文件的所有者)
chmod a+x my_file
這個命令把「my_file」變成是所有人都可以執行的。檢查是否可行:
ls ?l my_file
請注意,在Linux 和Unix 下,修改文件的擴展名(比如.exe 或者.bat)並不能使文件變成可以運
行。文件能夠被執行需要「可執行訪問模式」,而不是象DOS 下的「文件屬性」.

[火星人 ] 執行一個程序不能運行的三個可能已經有604次圍觀

http://coctec.com/docs/linux/show-post-139031.html