Мультисистемный скрипт не будет работать! & ldquo; Синтаксическая ошибка: неожиданное перенаправление & rdquo; Работали 2 дня назад?

это мой первый вопрос.

Я все время использую Multisystem и установил его на Kubuntu и Ubuntu и использовал без проблем. Я вытер свой жесткий диск, чтобы попробовать некоторые новые ОС. Сейчас я использую ту же ОС (Ubuntu 12.05), с которой я сначала загружал USB-накопитель, и теперь я получаю эту нелепую синтаксическую ошибку. Я знаю, что сценарий правильный, я выполняю те же самые шаги, которые я использовал для достижения этой точки, и я получаю разные результаты?!?! Я очень смущен этим.

Я понятия не имею, как начать решать эту проблему. Теперь я получаю ту же синтаксическую ошибку на Kubuntu, на которой установлена ​​мультисистемная система.

Я запускаю «sh install-depot-multisystem.sh» и получаю «Синтаксическая ошибка: неожиданное перенаправление», это сработало буквально 2 дня назад. Единственное, что изменилось, это то, что на моем лице выросли волосы на лице, и моя голова болит от удара о стену из-за этой проблемы.

ОС точно такая же, сценарий тот же; но теперь он не будет установлен. Я потерян и очень надеюсь, что кто-то может помочь.

Добавить

Просто добавить к этому немного

https://lists.ubuntu.com/archives/ub...er/ 000264.html

Мне нужно было выполнить chmod 777 для скрипта, я все еще получаю синтаксическую ошибку на Kubuntu ... но он успешно установился. Я отмечу это как resovled!

В любом случае, спасибо, я попытаюсь развить свои навыки в Linux.

0
задан 29 June 2012 в 15:40

2 ответа

это не sh bash Не используйте "sh install-depot-multisystem.sh", просто используйте: install-depot-multisystem.sh

0
ответ дан 29 June 2012 в 15:40

Скрипт был эффективен даже при синтаксической ошибке, поэтому кажется, что этот вопрос действительно сводится к , как запустить скрипт .

Запуск в качестве исполняемого файла

Чтобы запустить сценарий, который находится в текущем каталоге , без явного вызова оболочки , необходимо ввести его имя с ./. Он также должен быть исполняемым.

chmod u+x install-depot-multisystem.sh
./install-depot-multisystem.sh

Это будет работать, только если скрипт начинается со строки hashbang , указывающей, какая оболочка должна его запускать.

Если вы запустили chmod 777 для скрипта, и это помогло, то причина, по которой он помог, почти наверняка заключалась в том, что он дал вам как владельцу скрипта права на выполнение скрипта. Вы также дали себе и всем другим пользователям права на чтение и запись, а также разрешение на выполнение для всех остальных пользователей. Это не нужно, потенциально серьезная проблема безопасности. chmod u+x так же хорошо, и гораздо безопаснее.

Вызов оболочки

В качестве альтернативы вы можете запустить скрипт, явно вызвав оболочку, как вы пытались изначально:

sh install-depot-multisystem.sh

Скрипт имеет расширение .sh, поэтому он должен быть запущен с sh. Но в случае, если автор сценария назвал его неправильно, и это действительно сценарий bash, вы можете попробовать запустить с bash (как предложил geirha ):

bash install-depot-multisystem.sh

Запуск в Текущая оболочка

Это включено только для полноты - если вы не написали сценарий и не знаете, что он будет работать должным образом, или инструкции, сопровождающие сценарий, говорят, чтобы запустить его таким образом, вы должны использовать один из предыдущих два метода вместо. Многие сценарии будут работать правильно только в том случае, если у них будет собственная оболочка, в которой они будут выполняться (что достигается одним из двух вышеуказанных методов).

С учетом сказанного вы можете попытаться запустить сценарий в текущей оболочке, с текущей средой оболочки, с помощью одной из следующих команд:

. install-depot-multisystem.sh
source install-depot-multisystem.sh

Запуск от имени root

Если сценарий устанавливает общесистемную программу или службу, возможно, его нужно запустить от имени пользователя root. Не запускайте скрипт (или что-либо еще) от имени пользователя root, если вы не знаете, что вам нужно это сделать.

Чтобы запустить его как root, поместите sudo перед командой, которая его запускает. Любая из этих трех команд будет работать (хотя для первой все еще требуются разрешения на выполнение):

sudo ./install-depot-multisystem.sh
sudo sh install-depot-multisystem.sh
sudo bash install-depot-multisystem.sh
0
ответ дан 29 June 2012 в 15:40

Другие вопросы по тегам:

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