Вся сила Linux в использовании терминала. Это такая командная оболочка, где вы можете выполнять различные команды, которые будут быстро и эффективно выполнять различные действия. Ну впрочем, вы наверное это уже знаете. Для Linux было создано множество скриптов, которые выполняются в различных командных оболочках. Это очень удобно, вы просто объединяете несколько команд, которые выполняют определенное действие, а затем выполняете их одной командой или даже с помощью ярлыка.
Но у новичков может возникнуть вопрос - как запустить скрипт в Linux, что для этого нужно сделать, что будет происходить и какие команды нужно выполнить. Но сначала нужно рассмотреть как работают скрипты и что такое исполняемость.
Содержание статьи
Как работают скрипты
В Linux почти не используется расширение файла для определения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.
Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа - интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.
Запуск скрипта sh в Linux
Сначала рассмотрим пример небольшого sh скрипта:
Вторая строка - это действие, которое выполняет скрипт, но нас больше всего интересует первая - это оболочка, с помощью которого его нужно выполнить. Это может быть не только /bin/bash, но и /bin/sh, и даже /usr/bin/python или /usr/bin/php. Также часто встречается ситуация, что путь к исполняемому файлу оболочки получают с помощью утилиты env: /usr/bin/env php и так далее. Чтобы выполнить скрипт в указанной оболочке, нужно установить для него флаг исполняемости:
chmod ugo+x script.sh
Мы разрешаем выполнять запуск sh linux всем категориям пользователей - владельцу, группе файла и остальным. Следующий важный момент - это то место где находится скрипт, если вы просто наберете script.sh, то поиск будет выполнен только глобально, в каталогах, которые записаны в переменную PATH и даже если вы находитесь сейчас в той папке где находится скрипт, то он не будет найден. К нему нужно указывать полный путь, например, для той же текущей папки. Запуск скрипта sh в linux:
./script.sh
Или полный путь от корня:
/home/user/script.sh
Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ - /usr/local/bin.
cp script.sh /usr/local/bin/script.sh
Теперь вы можете выполнить:
script.sh
Это был первый способ вызвать скрипт, но есть еще один - мы можем запустить оболочку и сразу же передать ей скрипт, который нужно выполнить. Вы могли редко видеть такой способ с bash, но он довольно часто используется для скриптов php или python. Запустим так наш скрипт:
bash script.sh
А если нам нужно запустить скрипт на php, то выполните:
php script.php
Вот так все просто здесь работает. Так можно запустить скрипт как фоновый процесс, используйте символ &:
script.sh &
Даже запустить процесс linux не так сложно.
Выводы
Как видите, запуск скрипта sh в linux - это довольно простая задача, даже если вы еще плохо знакомы с терминалом. Существует действительно много скриптов и некоторые из них вам возможно придется выполнять. Если у вас остались вопросы, спрашивайте в комментариях!
Добавте описание передачи параметров скрипту - например: $0 — имя скрипта, $1 — первый параметр, $2 — второй параметр и т. д. Также существуют две вспомогательные переменные: $# содержит количество переданных аргументов; $@ содержит все аргументы, переданные скрипту, разделенные пробелами... Ну и можно про утилиту dialog.
прочитал и посмотрел -ЗАПУСК СКРИПТА SH В LINUX-.,и ничего не понял.
Возник вопрос, для кого это написано?
Рядовому пользователю ничего НЕ понятно,а програмист наверняка и так это знает и умеет
А что вам не понятно?
Открываем терминал в папке со скриптом, вводим sudo sh, подтверждаем паролем, мышей перетягиваем файл скрипта в терминал, жмем enter, ждем выполнения,радуемся. Зачем лишний геморрой.
> sudo sh ?
ай маладца!
А в скрипте
rm -rf
или
dd if=/dev/hda of=/dev/dsp bs=8m
ржунимагу )))))
Тоже не разобрался,хотя автор пишет,что всё легко и просто.Может оно и так.Только автор не может это донести.Хотя тема интересная.Думаю,что в гугле можно найти более доходчивое раскрытие темы.
Статья описывает только то как запустить скрипт. Если вам нужна информация о создании скриптов, то нужно использовать поиск - https://losst.pro/napisanie-skriptov-na-bash
Здравствуйте. Написал свой первый скрипт, который копирует в различные каталоги файлы из того же каталога, в котором лежит скрипт. Через терминал скрипт отрабатывает нормально, а через графическую оболочку не находит файлы которые нужно копировать. Подскажите, как для скрипта назначить домашним каталогом тот каталог, в котором он находится?
sudo sh и перетащить файл в терминал-enter, чуток не так написал.
спасибо, получилось)
Можно еще задать вначале скрипта команду
cd ~
или, например так, если файл лежит не в домашнем каталоге
cd /home/user/'папка где лежит скрипт'
Михаил, спасибо, прям жизнь спасли!
(ну, несколько ее часов точно)
Любителям сложнописания понимать же надо, что у обычного юзера просто нет времени разбираться!
У всех работа, семьи, обязанности...
Привет! Подскажите какой образ kde neon надо качать?
Этот neon-useredition-20170907-1018-amd64.iso или neon-useredition-current.iso?
Весят они одинаково 1.7G в чем разница?
https://files.kde.org/neon/images/neon-useredition/current/
Без понятия. Думаю там нет принципиально важной разницы, качайте любой.
Зачем тогда разрабы выложили два одинаковых образа? Я думаю какая то разница есть.
Надо полагать, что один из них (последний) - это символьная ссылка на второй образ. Чтобы на том же сайте каждый раз не менять ссылку и она всегда вела на последний более свежий образ.
Добрый день!
А как запустить sh-скрипт в веб-сервере httpd на Open BSD (не Apache) используя CGI?
Доброго времени суток!
На ubuntu-server использую ПО, которое предоставляет свое API для дополнительных полезных возможностей.
Вся моя проблема в том, что работать с API я могу только через bash, ручками написывая скрипты, т.е. мне необходимо лезть в терминал и писать команду для выполнения определенной операции.
Я, человек ленивый, как и многие, и большую часть работ хотел бы передать ЭВМ, для этого они и были созданы 🙂
Мое желание понять: как выполнять bash скрипты (генерируя их на лету) при помощи php.
Прошу подсказки, буду очень благодарен 🙂
P.S. мне уже наскучало не первый раз лезть в терминал ubuntu-сервака и выполнять заранее написанный в notepad++ скриптик для bash и хочется автоматизировать процесс, например написав web-интерфейс, отправляющий определенные команды на php-обработчик, распознающий команды и выполняющий в соответствии с ними скрипт напрямую на bash (на этом же ubuntu-сервере).
Во второй вставке кода:
"chmod ugo+x sript.sh" - sript поправьте пожалуйста
Ни фига не получилось запустить установку bluegriffon! В папке файл run-mozilla.sh. При любых командах Терминал пишет: run-mozilla.sh: Cannot execute - и хоть ты с бубном пляши!
добавьте chmod +x name.sh и будет вам щастя
А как запустить скрипт без терминала?
Пришлось в файле /etc/sudoers раскомментировать строку # WHEEL_USERS ВСЕ=(ВСЕ) ВСЕ, чтобы разрешить членам группы wheel выполнять любую команду.... чтобы установить браузер СПУТНИК в altlinux 9.1, командой: sh имя_файла.run
Всем добра! Через Putty на Windows зашёл на Armbian, который находится на другом девайсе и на который мне необходимо установить и запустить скрипт. Папка со скриптом лежит на рабочем столе Windows. Как мне установить и запустить свой скрипт из под винды?
как сделать так, чтобы скрипт в файле подключался ко всем пользователям системы при входе?
Реально ли сделать запуск скрипта по двойному клику с отображением окна терминала так же как в винде? Хотелось бы удобную отладку для вывода информации, так же интерактивный подход к скриптам как это реализовано в винде: "set /p var="; "pause"; "ctrl+c" (прерывания) и тому подобное. drag&drop в терминал как то коробит :/
Интересно, можно ли изменить поведение оболочки по умолчанию, чтобы запускался скрипт не по "путям из переменной окружения" , а из текущего каталога, где находишься? И только потом уже, если оный не найден в текущем каталоге - лезть искать по всем "путям из переменной окружения" ? Это было бы, мягко говоря, эргономичнее, чем каждый раз онанизмом с вводом "текущих" путей заниматься... Или нет?...