NodeJS React Systemd Service не работает

Основываясь на отзывах @Kusalananda и @stéphane -chazelas, я пытаюсь ответить на вопрос сам.

Оболочка является интерпретатором командной строки. Входные токены строго не печатаются. Лечение зависит от контекста. Есть два разумных ответа:

Ответ 1

Тильда вообще не имеет «вида языковой конструкции», потому что при интерпретации ввода оболочки не происходит ввода. В зависимости от контекста ввод обрабатывается динамически.

Ответ 2

Тип тильды наиболее близок к виртуальному типу «путь». В типичном контексте он расширяется до домашнего каталога, что дает характер, похожий на переменную, хотя это не так.

Обоснование ответа 1

Даже токены управления потоком не печатаются на Bash:

echo while

Это не ошибка. Он просто печатает «пока» в этом контексте.

В зависимости от контекста тильда трактуется по-разному. Обычно он расширяется до домашнего каталога пользователя :

.
echo ~

В других контекстах не раскрывается:

echo "~"
echo ~~

Обоснование ответа 2

Определение POSIX говорит о тильде без кавычек как о «слове». В обычном случае он расширяется до домашнего каталога оболочкой до того, как будет использоваться самой оболочкой в ​​качестве пути или до того, как он будет передан в качестве аргумента другим программам.

Используется как путь к исполняемому файлу:

~/bin/myprogram

Используется как путь в аргументе:

ls ~

Даже расширение до домашнего каталога перед передачей в качестве аргумента не обязательно должно быть путем:

echo ~

Опять же, в типичном случае использования в оболочке слова без кавычек используются как пути, а слова в кавычках — как строковые аргументы. Каждый вызов исполняемого файла является относительным путем к $PATH. Нажатие расширяет слова на основе путей в файловой системе.

**Резюме**

Оболочку можно использовать не -нетипичным -способом. Например, вы можете использовать строки в кавычках как пути к исполняемым файлам:

"echo" echo 

Эхо этого отпечатка. Типичное использование кавычек и некавычек инвертировано.

Обоснование ответа 2 основано на соглашениях, а не на реальной печати. Архитектура оболочки является динамической.

0
08.04.2020, 14:01
1 ответ

Попробуйте добавить StandardInput=tty-forceв раздел [Service]

0
28.04.2021, 23:18

Теги

Похожие вопросы