Bash скрипт не может найти файл в / opt и выдает странное сообщение об ошибке - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь использовать простой 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 внутри подсистемы Windows для Linux. Что может вызвать это сообщение об ошибке?

Когда я запускаю ls -al pvbatch в /opt/paraviewopenfoam54/bin, я получаю

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

cat pvbatch возвращает сообщение об ошибке

cat: write error: Input/output error

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Так что cat не могу прочитать файл, что странно!

Первая мысль - проблема с самим файлом. где был создан файл? Я вижу, что он находится в папке /opt/paraviewopenfoam54/bin, которая является управляемой папкой linux, вы создали и отредактировали файл с помощью vim в WSL или вы создали его в windows как-то с помощью VS Code или тому подобного?

Позвольте мне просто убедиться, что вы не создаете и не редактируете файлы в windows непосредственно в папке / opt внутри папок% LOCALAPPDATA%. Если файл был создан этим способом, вы рискуете повредить установку WSL. Не редактировать файлы WSL

0 голосов
/ 10 февраля 2020

При использовании WSL я обычно нахожу проблемы и особенно эту проблему Input/output error всякий раз, когда я создаю файл непосредственно из windows в файловую систему Linux. Существуют три основных способа решения этой указанной c проблемы: (это не шаги, а отдельные решения)

-Перезапустите терминал Ubuntu

-Перезапустите весь компьютер

- Удалите файл непосредственно из Windows, touch файла, затем перезапишите файл со старым

. Для более масштабируемого решения я рекомендую оставить файл в системе windows. и работает только в системе Linux внутри Linux.

...