【问题标题】:How to run bash scripts on WSL如何在 WSL 上运行 bash 脚本
【发布时间】:2019-06-16 20:15:22
【问题描述】:

我正在尝试从 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
  • 不幸的是,我不再有那个 WSL 安装。我会记住行尾。我的原始脚本是用 Linux 编写的,但有可能我在 Windows 上的编辑器中打开它并破坏了它。

标签: bash windows-subsystem-for-linux


【解决方案1】:

我无法复制此问题。我已将此作为答案提交以包含代码:

henry@TV:~
498$ cat <<, >script.sh
#!/bin/bash
echo hello
,

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

编辑:请注意,如果您要直接使用 bash 调用,则不需要 #!/bin/bash shebang 和 .sh 扩展名。您的chmod 仅在您将其作为可执行文件./script 调用时才需要,在这种情况下需要shebang。

【讨论】:

  • 嗯。我以为我做错了什么。那时我的wsl安装可能有问题。感谢您的回复!
  • 同上,这个问题对我来说也无法重现。
  • 我遇到了这个问题,你解决了吗?
猜你喜欢
  • 1970-01-01
  • 2020-05-25
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多