首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Linux 執行腳本提示 "command not found"?路徑與權限的兩大核心解法

     編輯:程式設計疑難解答

錯誤現象

$ ./myscript.sh
bash: ./myscript.sh: No such file or directory
# 或
$ myscript.sh
myscript.sh: command not found

核心原因與解決方案

原因一:當前目錄不在 PATH 中(最常見)

Linux 出於安全,**當前目錄 (.) 默認不在 PATH 環境變量中**。直接輸入腳本名無法找到。

解法 1:使用相對/絕對路徑(推薦)

$ ./myscript.sh    # 相對路徑,當前目錄
$ /home/user/scripts/myscript.sh  # 絕對路徑

解法 2:將腳本放入 PATH 目錄

$ 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 行錯誤或換行符問題

# 正確 shebang
#!/bin/bash
# 或
#!/usr/bin/env bash  # 更可移植

# Windows 編輯器保存可能帶 \r\n,導致內核找不到解釋器
# 修復:
$ sed -i 's/\r$//' myscript.sh  # 刪除 \r
$ dos2unix myscript.sh          # 專用工具

進階排查清單

  1. file myscript.sh 確認文件類型(應為 ASCII text, executable)。
  2. head -1 myscript.sh | od -c 檢查 shebang 與換行符。
  3. bash -x myscript.sh 調試模式運行,繞過權限/路徑問題定位腳本邏輯錯誤。
  4. 檢查掛載選項:mount | grep noexec,某些分區掛載了 noexec 禁止執行。

總結

command not found 90% 是路徑問題(未用 ./ 或不在 PATH)或權限問題(缺 x 權限)。養成習慣用 ./腳本名 執行當前目錄腳本,部署時統一放入 /usr/local/bin 或 ~/bin (已加入 PATH),配合 chmod +x,徹底告別此錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved