我正在使用 WSL(適用於 Linux 的 Windows 子系統)運行 ubuntu。我在下面寫了一個簡單的 shell 腳本。當我運行時出現以下錯誤。
#! /bin/sh
# "test script"
echo "hello world"
test.sh:找不到指令
但如果我運行 using 命令sh test.sh
或bash test.sh
.
那麼有什麼辦法可以讓我不用sh
像原生Linux那樣運作呢?
答案1
您始終可以將其運行為./test.sh
.
./
解析為以 結尾的目前目錄/
,因此您可以有效地提供腳本的完整路徑。
僅test.sh
當您的目前目錄位於$PATH
.這並不是 WSL 獨有的。
答案2
基本:
第一的:
您建立一個第一行帶有「shebang」的腳本,這定義了它是否是 bash、python 或 perl 等能夠理解文字檔案其餘部分的腳本。
這通常看起來像:#!/bin/bash
,#!/bin/env python
或類似的東西
第二:
確保文件具有x
用於選擇user
,group
和/或others
(man chmod
了解更多詳細資訊)的 - 標誌,例如
chmod 755 script_filename
第三:
將其放置在硬碟上任何永久安裝的儲存媒體上的資料夾(目錄)中。對於個人物品來說,
這mkdir -p $HOME/bin/
可能是個好主意。
第四:
確保資料夾在 - 中指定,例如新增包含 in 的echo $PATH
行
export PATH=$PATH:/absolute/path/to/folder/
$HOME/.bash_aliases
完成所有這些後,您的腳本將可以訪問(可執行)-在新啟動的 shell 中(#4 生效)- 只需在 bash 提示字元下輸入名稱即可。
(註:WSL 至少在第一個版本中是/曾經是 Canonical 的 Ubuntu)
更多詳情:https://tldp.org/guides.html- 在 Bash 指南中