Bash 脚本无法在 /opt 中找到文件并给出奇怪的错误消息

Bash script can't find file in /opt and gives strange error message

我正在尝试使用一个简单的 bash 脚本,该脚本使用 /opt

中的脚本
#!/bin/bash
pvpython=/opt/paraviewopenfoam54/bin/pvbatch
script_path=save_contours.py
$pvpython $script_path

文件 pvbatch 确实存在,但是当我尝试 运行 脚本时,我收到了这个奇怪的错误消息,感觉它缺少一些字符:

: No such file or directoryaviewopenfoam54/bin/pvbatch

我正在使用的 Ubuntu 是 Ubuntu 18.04.1 LTS,位于 Linux 的 Windows 子系统中。什么可能导致此错误消息?

当我 运行 ls -al pvbatch/opt/paraviewopenfoam54/bin 我得到

-rwxr-xr-x 1 root root 84200 May 29  2018 pvbatch

cat pvbatchreturns一条错误信息

cat: write error: Input/output error

使用 WSL 时,我经常发现问题,尤其是当我直接从 windows 创建文件到 Linux 文件系统时这个 Input/output error 问题。基本上有三种主要方法可以解决这个特定问题:(这些不是步骤,而是单独的解决方案)

-重新启动您的 Ubuntu 终端

-重新启动整个计算机

-直接从Windows删除文件,touch文件,然后用旧文件覆盖

对于更具可扩展性的解决方案,我建议将文件保留在 windows 系统中,并且仅在 Linux 中的 Linux 系统中工作。

所以cat无法读取奇怪的文件!

我的第一个想法是文件本身有问题。文件是在哪里创建的?我看到它在 /opt/paraviewopenfoam54/bin 下,这是一个 linux 托管文件夹,您是在 WSL 中使用 vim 创建和编辑文件,还是在 windows 中以某种方式创建它VS代码之类的?

让我检查一下您是否在 windows 中直接在 %LOCALAPPDATA% 文件夹内的 /opt 文件夹中创建和编辑文件。如果文件是用这种方法创建的,则可能会破坏 WSL 安装。 Dont Edit WSL files