Мультисистемный скрипт не будет работать! & 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 в 16:40

14 ответов

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

-1
ответ дан 25 July 2018 в 18:15

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

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

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

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

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

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

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

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

sh install-depot-multisystem.sh

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

bash install-depot-multisystem.sh

Запуск в текущей оболочке

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

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

. 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
2
ответ дан 25 July 2018 в 18:15

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

-1
ответ дан 2 August 2018 в 00:29

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

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

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

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

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

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

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

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

sh install-depot-multisystem.sh

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

bash install-depot-multisystem.sh

Запуск в текущей оболочке

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

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

. 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
2
ответ дан 2 August 2018 в 00:29

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

-1
ответ дан 4 August 2018 в 15:58

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

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

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

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

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

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

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

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

sh install-depot-multisystem.sh

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

bash install-depot-multisystem.sh

Запуск в текущей оболочке

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

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

. 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
2
ответ дан 4 August 2018 в 15:58

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

-1
ответ дан 6 August 2018 в 00:36

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

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

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

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

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

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

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

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

sh install-depot-multisystem.sh

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

bash install-depot-multisystem.sh

Запуск в текущей оболочке

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

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

. 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
2
ответ дан 6 August 2018 в 00:36

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

-1
ответ дан 7 August 2018 в 18:02

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

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

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

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

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

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

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

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

sh install-depot-multisystem.sh

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

bash install-depot-multisystem.sh

Запуск в текущей оболочке

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

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

. 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
2
ответ дан 7 August 2018 в 18:02

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

-1
ответ дан 10 August 2018 в 06:50

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

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

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

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

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

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

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

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

sh install-depot-multisystem.sh

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

bash install-depot-multisystem.sh

Запуск в текущей оболочке

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

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

. 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
2
ответ дан 10 August 2018 в 06:50

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

-1
ответ дан 15 August 2018 в 18:46
  • 1
    Вы не можете запустить скрипт в текущем каталоге, введя его имя в качестве полной команды. Он должен иметь префикс ./ или аналогичный. Также должны быть предоставлены исполняемые разрешения, если у них их нет. – Eliah Kagan 6 July 2012 в 17:40

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

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

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

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

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

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

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

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

sh install-depot-multisystem.sh

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

bash install-depot-multisystem.sh

Запуск в текущей оболочке

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

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

. 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
2
ответ дан 15 August 2018 в 18:46

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

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