我有兩個具有完全相同權限的 shell 腳本檔案等。是什麼原因?
答案1
很可能這兩個腳本位於不同的目錄中。其中一個目錄位於 PATH 中,而另一個則不在 PATH 中。
您可以使用該type
指令來測試目前 shell 的 $PATH 中是否存在檔案。
$ type start_dropbox.bash
start_dropbox.bash is /home/saml/bin/start_dropbox.bash
請參閱此 U&L 問答“如何測試 $PATH 中是否存在應用程式?”以獲得更全面的報道。
答案2
如果您只是給出腳本的名稱並且它可以工作,那麼您可以將它放在 /usr/bin/ /usr/sbin 或其他位置。這完全取決於您的路徑設定。
做這個:
1. echo $PATH
如果您的腳本位於這些目錄中的任何一個中,它將在不使用絕對路徑的情況下運行。
2. whereis "scripts name"
Whereis 或「which」會告訴您它所在的位置。您甚至可能授予了一個文件執行權限,而沒有授予另一個文件。對於不只使用名稱運行的程序,請執行 chmod u+x
- 如果是 python 腳本,則可能需要添加 #!/usr/bin/env python;如果是 bash,則可能需要添加 #!/usr/bin/env bash 等等。