На этот вопрос уже есть ответ:
Я новичок в Linux. Я пытаюсь создать сценарий, который что-то печатает и инициирует команду выключения. Это мой сценарий:
#!/bin/bash
echo Hello WOOOOORRRRRLLLLDDDDDDD
echo sudo poweroff
Каждый раз, когда я пытаюсь запустить свой сценарий, используя
chmod +x Hello World BASH
или ./Hello World BASH
, я получаю следующее сообщение об ошибке:
chmod: cannot access 'Hello': No such file or directory
chmod: cannot access 'World': No such file or directory
chmod: cannot access 'BASH': No such file or directory
В общем, каждый раз Я пытаюсь запустить этот скрипт, выскакивает сообщение об ошибке «нет такого файла или каталога». Как это исправить?
Выполнение эти команды в этом порядке:
chmod +x "Hello World BASH"
./"Hello World BASH"
имя файла А с пробелами нужно заключить в кавычки (с одинарными или двойными кавычками) или оставить (с обратными косыми чертами) так, чтобы оболочка поняла, что это - вся часть имени файла. Иначе это повредится на пробелах и интерпретирует одно имя файла (Hello World BASH
), поскольку три имен файлов (Hello
, World
, и BASH
)
Также chmod +x
не запускают скрипт, это делает исполняемый файл сценария.
Между прочим, если Вы не имеете, имеют, выполняют полномочия для данного файла, можно назвать интерпретатор для выполнения его:
bash "Hello World BASH"
Поскольку имя файла имеет пробелы в нем, необходимо использовать кавычки или Escape, таким образом, пространство не заставляет его быть похожим на 3 различных имен файлов:
chmod a+x "Hello World BASH"
"./Hello World BASH"
Или
chmod a+x Hello\ World\ BASH
./Hello\ World\ BASH