$ ./myscript.sh
bash: ./myscript.sh: No such file or directory
# 或
$ myscript.sh
myscript.sh: command not found
Linux 出於安全,**當前目錄 (.) 默認不在 PATH 環境變量中**。直接輸入腳本名無法找到。
$ ./myscript.sh # 相對路徑,當前目錄
$ /home/user/scripts/myscript.sh # 絕對路徑
$ sudo cp myscript.sh /usr/local/bin/ # 需 root
$ myscript.sh # 任意目錄可直接運行
$ ls -l myscript.sh
-rw-r--r-- 1 user user 123 Jan 1 10:00 myscript.sh # 無 x 權限
$ chmod +x myscript.sh # 添加執行權限
$ ./myscript.sh
# 正確 shebang
#!/bin/bash
# 或
#!/usr/bin/env bash # 更可移植
# Windows 編輯器保存可能帶 \r\n,導致內核找不到解釋器
# 修復:
$ sed -i 's/\r$//' myscript.sh # 刪除 \r
$ dos2unix myscript.sh # 專用工具
file myscript.sh 確認文件類型(應為 ASCII text, executable)。head -1 myscript.sh | od -c 檢查 shebang 與換行符。bash -x myscript.sh 調試模式運行,繞過權限/路徑問題定位腳本邏輯錯誤。mount | grep noexec,某些分區掛載了 noexec 禁止執行。command not found 90% 是路徑問題(未用 ./ 或不在 PATH)或權限問題(缺 x 權限)。養成習慣用 ./腳本名 執行當前目錄腳本,部署時統一放入 /usr/local/bin 或 ~/bin (已加入 PATH),配合 chmod +x,徹底告別此錯誤。