我正在使用 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 以选择user
,group
和/或others
(man 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 指南中