В Bash, если вы хотите, чтобы восклицательные знаки всегда обрабатывались как обычные символы и не нуждались в расширении истории, вы можете отключить его для текущей оболочки с помощью
set +o histexpand
или добавить команду в обычную конфигурацию files, т.е. скорее всего .bashrc
, чтобы отключить его для всех оболочек.
Некоторые программы требуют, чтобы вы вошли в оболочку bash для правильной работы, это может быть причиной использования && bash.
Оператор && успешно выполняет вторую команду только в том случае, если предыдущая команда работала правильно -но вы уже это знали, поэтому я предполагаю, что программное обеспечение, которое вы пытаетесь установить, требует оболочки bash, а другие оболочки могут не работать. правильно с заданной программой.
Инструкции по установке несколько нарушены.
Если бы опубликованный код оболочки был сценарием оболочки, часть && bash
была бы практически бесполезна, так как она запускала бы интерактивный bash
и оставался бы там до тех пор, пока пользователь не выйдет из оболочки с помощью Control-D или exit
, затем возобновите выполнение следующих команд с оболочкой текущего пользователя, какой бы она ни была.
Но, как вы написали, ожидается, что пользователь скопирует и вставит код. В этом случае && bash
условно запускает bash
, если mkdir
завершается успешно,а затем оставшиеся строки выполняются этим интерпретатором. Все идет нормально.
Первая проблема заключается в том, что происходит в (маловероятном )случае, когда команда mkdir
завершается ошибкой. Интерпретатор bash
не выполняется , но все оставшиеся строки , при условии, что весь блок команд оболочки был скопирован/вставлен, все равно будут выполнены . Более того, они будут выполняться любой оболочкой, в которой работает пользователь, поэтому, возможно, той, которая не понимает расширение фигурных скобок. Также будут ошибки со всеми командами, ссылающимися на отсутствующий каталог ~/bin
.
Вторая проблема заключается в том, что даже в первом случае(mkdir
завершается успешно ), последовательность команд является фиктивной, поскольку предполагается, что пользователь находится в своем домашнем каталоге при запуске команд, но, конечно, это не обязательно дело.
Если директория bin не существовала до и ее создание не удалось, открывается интерактивная оболочка bash, где вы можете работать как хотите....редактировать файл, писать письма бабушке, и скоро. Как только вы выходите из этой оболочки, скрипт продолжает работать, выполняя wget, tar и так далее.
Вот что на самом деле делает этот скрипт . Разумно это или нет, судить не хочу...