如何在WSL上运行bash脚本

4
我正在尝试从Ubuntu WSL运行脚本script.sh。在Ubuntu WSL中,调用sh script.sh只是简单地返回而不执行任何操作。我做错了什么吗?在WSL中运行Bash脚本的正确方法是什么?
我可以从Cygwin中运行该脚本,所以我知道它是有效的。EOL设置为Unix。我已将权限设置为777。我尝试从WSL交互式shell内部和PowerShell命令中运行它:bash script.sh;两者都无效。我尝试过使用bashshwsl./
脚本:
#!/bin/bash

echo "hello"

WSL 的结果:

~/test$ bash script.sh
~/test$

Cygwin的结果:

$ bash script.sh
hello

~/AppData/<path to ubuntu home>/test
$

回答晚了,但还是有人来这里看看 - 还要注意一下你脚本中的行尾是什么?它应该是 Linux 风格的 \n 而不是 \r\n - Koder101
很遗憾,我不再拥有那个WSL安装程序了。我会记住行尾的问题。我的原始脚本是在Linux上编写的,但有可能我在Windows上打开它并且弄坏了它。 - laifs
1个回答

2
我无法重现这个问题。为了包含代码,我已将其作为“最初的回答”提交:
henry@TV:~
498$ cat <<, >script.sh
#!/bin/bash
echo hello
,

henry@TV:~
499$ bash script.sh
hello

请注意,如果您直接使用bash调用此脚本,则#!/bin/bash shebang和.sh扩展名都是不必要的。如果您将其作为可执行文件./script来调用,则只需要您的chmod。在这种情况下,shebang是必需的。"Original Answer"翻译成"最初的回答"。

哦,我以为我做错了什么。可能是我的wsl安装有问题。谢谢回复! - laifs
同样的情况发生在我这里,我也无法复现这个问题。 - ifconfig
1
我遇到了这个问题,你解决了吗? - iphigenie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接