如何在 Linux 的 Windows 子系統中執行 shell 腳本而不使用 sh 或 bash?

如何在 Linux 的 Windows 子系統中執行 shell 腳本而不使用 sh 或 bash?

我正在使用 WSL(適用於 Linux 的 Windows 子系統)運行 ubuntu。我在下面寫了一個簡單的 shell 腳本。當我運行時出現以下錯誤。

#! /bin/sh
# "test script"
echo "hello world"

test.sh:找不到指令

但如果我運行 using 命令sh test.shbash test.sh.

那麼有什麼辦法可以讓我不用sh像原生Linux那樣運作呢?

答案1

您始終可以將其運行為./test.sh.

./解析為以 結尾的目前目錄/,因此您可以有效地提供腳本的完整路徑。

test.sh當您的目前目錄位於$PATH.這並不是 WSL 獨有的。

答案2

基本:

第一的:
您建立一個第一行帶有「shebang」的腳本,這定義了它是否是 bash、python 或 perl 等能夠理解文字檔案其餘部分的腳本。

這通常看起來像:#!/bin/bash#!/bin/env python或類似的東西

第二:
確保文件具有x用於選擇user,group和/或othersman 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 指南中

相關內容