如何在 Linux/Ubuntu 上從不同目錄執行腳本
從多個資料夾執行腳本看似簡單,但實際操作起來卻比你想像的更容易出錯。也許你正在處理多個腳本執行任務,或者只是想讓檔案跨目錄組織起來,突然意識到無法直接輸入檔案名稱來運行它,因為它不在當前目錄中。又或者權限設定很麻煩。總之,本指南介紹了一些在其他地方執行腳本的實際方法——當然,因為 Linux 和 *nix 系統喜歡把事情弄得複雜。希望它能幫你省去一些麻煩。
如何在 Linux 或 Unix 中從其他目錄執行腳本
使用腳本的完整路徑
這是最簡單、最實用的方法。如果你知道腳本的具體位置,只需在終端機中輸入完整路徑即可。例如,如果你的腳本位於/home/user/scripts/myscript.sh,只需執行:
/home/user/scripts/myscript.sh
但別忘了——你的腳本必須是可執行的,否則 Linux 會拋出權限錯誤。你可以使用以下命令檢查:
ls -l /home/user/scripts/myscript.sh
如果您看到類似這樣的內容-rw-r--r--
,並且x
執行時沒有內容,則需要使其可執行:
chmod +x /home/user/scripts/myscript.sh
在某些設定中,權限變更可能會在第一次失敗或需要重啟,因此如果存在所有權問題,額外的「sudo」可能會有所幫助。一旦可執行,運行完整路徑就像變魔術一樣——並且可以避免很多混亂。
更改腳本目錄
如果您在同一個資料夾中執行多個腳本或想要保持整潔,只需先更改目錄:
cd /home/user/scripts
然後執行以下腳本:
./myscript.sh
這在互動式工作時會更簡潔一些,因為它就像「停留在該資料夾」模式。只是不要忘記./
前綴——Linux 不會自動在你的 PATH 中查找它。
專業提示:如果您的腳本未標記為可執行但您信任它,則可以bash
直接運行它:
bash myscript.sh
這可以繞過權限,但要將其與值得信賴的腳本一起使用 – 因為當然,Linux 有時必須使其比應有的更難。
使用 Bash 命令從任何地方運行腳本
如果您想要一種快捷方式而又不必過多擔心權限,只需運行:
bash /home/user/scripts/myscript.sh
無論腳本是否可執行,此方法都有效,這在測試或趕時間時非常方便。說實話,在某些機器上,這種方法感覺更快,但對於頻繁使用來說,它有點不太整潔。
額外提示和常見問題
- 在點擊「執行」之前,務必仔細檢查腳本是否有錯誤,尤其是在涉及權限或路徑的情況下。沒有什麼比腳本中隱藏的拼字錯誤更能影響生產力了。
- 如果您經常在同一個目錄中執行腳本,請考慮將該目錄新增至PATH。這樣,您只需輸入腳本名稱即可運行腳本,而不必每次都記住完整路徑。
- 如果出現問題,請嘗試執行 進行偵錯
bash -x /path/to/yourscript.sh
。它會在執行每個命令之前將其列印出來,這對於捕獲隱藏的錯誤非常有用。
包起來
熟練地在不同的資料夾中執行腳本是一項必備的 Linux 技能。無論是透過完整路徑、更改目錄或直接運行bash
,這些方法都能幫助維持一切的靈活性。隨著時間的推移,你會找到最適合你工作流程的組合。說實話,一旦你習慣了,就會感覺非常自然——就像第二天性一樣。嗯,基本上就是這樣。
常見問題
我可以運行用 Bash 以外的語言編寫的腳本嗎?
完全正確。只需指定解譯器即可。例如,對於 Python 腳本,您可以運行python /path/to/script.py
。同樣的原則也適用於 Perl、Ruby 或任何其他語言。
如果我收到「權限被拒絕」錯誤怎麼辦?
這通常是因為腳本未標記為可執行檔。只需運行即可chmod +x /path/to/script
。有時,如果權限被鎖定,則可能需要在前面加上「sudo
如果權限被鎖定,則需要執行」。
有沒有辦法在系統啟動時自動執行腳本?
是的,您可以透過systemd服務檔案將腳本新增到系統啟動中,或將它們放入cron中(就像 一樣crontab -e
),或者對於較舊的系統,可以使用 init 腳本。但那是另一個故事了。
概括
- 完整路徑運行腳本快速而粗糙。
- 更改目錄可使多個腳本保持整潔。
- 使用
bash
類似於權限作弊程式碼的方式。 - 權限很重要—確保腳本是可執行的。
- 將目錄加入PATH可以簡化重複的任務。