如何在 Windows Subsystem for Linux 中运行没有 sh 或 bash 的 shell 脚本?

如何在 Windows Subsystem for Linux 中运行没有 sh 或 bash 的 shell 脚本?

我正在使用 WSL(适用于 Linux 的 Windows 子系统)运行 ubuntu。我在下面编写了一个简单的 shell 脚本。运行时出现以下错误。

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

test.sh:未找到命令

但如果我运行使用命令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-flag 以选择usergroup和/或othersman chmod有关更多详细信息)通过使用例如
chmod 755 script_filename

第三:
将其放在硬盘上的文件夹(目录)中,放在任何永久安装的存储介质上。对于个人物品来说,
这可能是一个好主意。mkdir -p $HOME/bin/

第四:
确保文件夹在echo $PATH- 例如添加一行
export PATH=$PATH:/absolute/path/to/folder/
包含$HOME/.bash_aliases

完成所有这些后,您的脚本将可以访问(可执行)-在新启动的 shell 中(以使 #4 生效)- 只需在 bash 提示符下输入名称即可。
(注:WSL 至少在第一个版本中是/曾经是 Canonical 的 Ubuntu)


更多详情:https://tldp.org/guides.html- 在 Bash 指南中

相关内容