前言:
使用場景是 我這邊的一個單體專案需要多一個多副本的部署方式,一直輸入重複命令我實在是嫌煩了,使用寫了一個指令碼來一鍵更新部署上去。jar包都是我手動上傳的,沒有把包傳入公網庫裡。
之所以記錄就是因為遇到了幾個沒有遇到過的問題記錄以下。
示例:
省略每次輸入
chmod +x script
這個命令,可以將指令碼複製到一個在系統 PATH 中的目錄中,這樣就可以在任何地方執行它,而無需新增 ./
字首或手動更改許可權。可以將指令碼複製到
/usr/local/bin/
目錄中:sudo cp 指令碼檔名 /usr/local/bin/
然後就可以在任何地方都只需要輸入 指令碼名稱就可以執行。
錯誤一:-bash: /usr/local/bin/runpoject: Permission denied 沒有許可權的命令
這個錯誤是由於許可權問題引起的,它表示你沒有足夠的許可權來執行
/usr/local/bin/runpoject
指令碼。這是因為 /usr/local/bin
目錄通常需要超級使用者許可權才能寫入。你可以嘗試以下步驟來解決這個問題:
使用嘗試使用以下命令:
sudo chmod +x /usr/local/bin/script
錯誤二:-bash: /usr/local/bin/runpoject: /bin/bash^M: bad interpreter: No such file or directory 轉義符的原因
這個錯誤訊息表明你的指令碼檔案包含了 Windows 風格的換行符(
\r\n
),而不是 Linux 風格的換行符(\n
)。這種問題可能會導致直譯器無法找到正確的路徑。要解決這個問題,你可以使用文字編輯器將指令碼檔案轉換為 Linux 風格的換行符。
你可以使用 dos2unix
命令來進行轉換,如果系統沒有安裝這個命令,可以嘗試使用 sed
命令來進行轉換,如下所示:
sed -i 's/\r$//' /usr/local/bin/script
親測可以解決問題。