运行命令play时出现错误:/usr/bin/env: sh: 没有那个文件或目录。

66

我是Play框架的初学者。我刚刚提取了Play框架文件并将它们解压缩,并将play目录的路径赋给了$PATH全局变量。在此之后,当我在Ubuntu上运行命令play help时,它会给我以下错误:

/usr/bin/env: sh: No such file or directory

有什么线索可以解释我为什么会遇到这个错误,并且如何解决它吗?


为什么在我的系统上 #!/usr/bin/env bash 无法工作? - jww
在将项目移动到其他计算机后,我遇到了这个问题,请尝试重新创建清单。 - mohammad alabid
11个回答

119

如果脚本使用的是Windows行结束符而不是Unix行结束符,通常会出现此错误。

尝试对脚本运行dos2unix,然后再次运行命令,看看是否会出现相同的错误。

dos2unix [filename]

7
这是解决方案。我从Windows机器复制了该文件。在文件上安装并运行dos2unix使其能够无问题地运行。 - johnny
1
如果您使用的是 macOS 系统,则默认情况下不会安装 dos2unix,但可以参考 https://dev59.com/amw15IYBdhLWcg3w0fKh#23831111 获取解决方案。 - Ken

22

我曾经遇到同样的问题,并使用 Notepad++ 解决了它,具体方法是点击“编辑”(Edit)->“行尾转换”(EOL Conversion)->“Unix”,然后保存文件。


4

我遇到了相同的错误。我正在使用 Windows Subsystem for Linux. 首先,我尝试通过输入 tr -d '\r' < input.sh > output.sh来移除Windows行末标识符。 但这并没有帮助解决问题。 实际上,问题出在路径不存在。我需要在脚本的第一行使用#!/usr/bin/bash而不是#!/usr/bin/env bash


4

解决env: sh\r: No such file or directory问题:

有时在不同操作系统之间传输文件时,行尾可能会被转换为错误的格式,这可能会导致 shell 脚本出现问题。在受影响的文件上运行 dos2unix 是修复行尾格式并确保 shell 脚本无误执行的快速简便方法。

在我的情况下,是从 Windows 到 MacOS 进行的转移。

以下步骤对我有帮助:

  1. 安装 brew install dos2unix
  2. 转换存储库中所有的 .sh 文件:find . -type f -name '*.sh' -exec dos2unix {} \;
  3. 转换所有钩子。我只有一个钩子,因此只需运行一个命令:dos2unix .husky/pre-commit

希望它能够帮助到您。


我知道在这里不应该说谢谢,但是对于我来说这真的很完美,所以感谢你提供如此有帮助的“指令”/建议。 - thathurtabit

2

$PATH环境变量设置在~/.bashrc~/.bash_profile~/.profile文件中。

source相关配置文件或启动新的bash终端即可解决问题。


2

对于在Windows上使用Visual Studio Git模块的人,如果你遇到了这个错误

enter image description here

您应该在环境变量系统中设置C:\Program Files\Git\binPath

enter image description here


这对我有用,但是我的git\bin位于另一个文件夹中。使用cmd查找您的路径:c:>where git - Emil G
谢谢,那对我有用,我在Windows上使用GitHub Desktop时也遇到了同样的问题。 - undefined

1

只需使用此链接将sh终端更改为bash,一切都应该没问题。

1. Change user entry in /etc/passwd
a) edit /etc/passwd using any editor

$ vi /etc/passwd
b) find the line that belongs to the user (foo) that we about to modify
foo:x:1001:1001::/home/foo:/bin/sh
c) change from /bin/sh to /bin/bash
foo:x:1001:1001::/home/foo:/bin/bash
d) save
e) Logout and login back

2. Use chsh command
a) type chsh
$ chsh
b) You will be asked for password. Enter your password
c) This screen will appear
Enter the new value, or press ENTER for the default
Login Shell [/bin/sh]:
d) Put /bin/bash at the menu and press Enter

0
在新的Macbook Pro上运行时遇到了这个错误,因为默认的shell现在是ZSH而不是Bash。只需键入bash进入bash shell,并像往常一样运行您的脚本即可。

0

如果文件开头有 UTF-8的 "BOM" 头部(字节顺序标记),也会出现这种情况。请使用编辑器“删除bom”。


0

在使用Windows子系统Linux(WSL2)时,我遇到了一个非常相似的错误。

通过git config --global core.autocrlf false将git autocrlf设置为false,并重新克隆存储库对我很有帮助。

我还看到一些人建议防止WSL将Windows路径添加到PATH环境变量中(阅读更多)。


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