Главная >> Инструкции >> Запуск скрипта sh в Linux

Запуск скрипта sh в Linux

Вся сила Linux в использовании терминала. Это такая командная оболочка, где вы можете выполнять различные команды, которые будут быстро и эффективно выполнять различные действия. Ну впрочем, вы наверное это уже знаете. Для Linux было создано множество скриптов, которые выполняются в различных командных оболочках. Это очень удобно, вы просто объединяете несколько команд, которые выполняют определенное действие, а затем выполняете их одной командой или даже с помощью ярлыка.

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


Содержание статьи

Как работают скрипты

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

Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа - интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.

Запуск скрипта sh в Linux

Сначала рассмотрим пример небольшого sh скрипта:

#!/bin/bash
echo "Hello world"

Вторая строка - это действие, которое выполняет скрипт, но нас больше всего интересует первая - это оболочка, с помощью которого его нужно выполнить. Это может быть не только /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 - это довольно простая задача, даже если вы еще плохо знакомы с терминалом. Существует действительно много скриптов и некоторые из них вам возможно придется выполнять. Если у вас остались вопросы, спрашивайте в комментариях!

29 комментариев к “Запуск скрипта sh в Linux”

  1. Добавте описание передачи параметров скрипту - например: $0 — имя скрипта, $1 — первый параметр, $2 — второй параметр и т. д. Также существуют две вспомогательные переменные: $# содержит количество переданных аргументов; $@ содержит все аргументы, переданные скрипту, разделенные пробелами... Ну и можно про утилиту dialog.

    Ответить
  2. прочитал и посмотрел -ЗАПУСК СКРИПТА SH В LINUX-.,и ничего не понял.
    Возник вопрос, для кого это написано?
    Рядовому пользователю ничего НЕ понятно,а програмист наверняка и так это знает и умеет

    Ответить
  3. Открываем терминал в папке со скриптом, вводим sudo sh, подтверждаем паролем, мышей перетягиваем файл скрипта в терминал, жмем enter, ждем выполнения,радуемся. Зачем лишний геморрой.

    Ответить
  4. Доброго времени суток!
    На ubuntu-server использую ПО, которое предоставляет свое API для дополнительных полезных возможностей.
    Вся моя проблема в том, что работать с API я могу только через bash, ручками написывая скрипты, т.е. мне необходимо лезть в терминал и писать команду для выполнения определенной операции.
    Я, человек ленивый, как и многие, и большую часть работ хотел бы передать ЭВМ, для этого они и были созданы 🙂
    Мое желание понять: как выполнять bash скрипты (генерируя их на лету) при помощи php.
    Прошу подсказки, буду очень благодарен 🙂

    P.S. мне уже наскучало не первый раз лезть в терминал ubuntu-сервака и выполнять заранее написанный в notepad++ скриптик для bash и хочется автоматизировать процесс, например написав web-интерфейс, отправляющий определенные команды на php-обработчик, распознающий команды и выполняющий в соответствии с ними скрипт напрямую на bash (на этом же ubuntu-сервере).

    Ответить
  5. Ни фига не получилось запустить установку bluegriffon! В папке файл run-mozilla.sh. При любых командах Терминал пишет: run-mozilla.sh: Cannot execute - и хоть ты с бубном пляши!

    Ответить
  6. Пришлось в файле /etc/sudoers раскомментировать строку # WHEEL_USERS ВСЕ=(ВСЕ) ВСЕ, чтобы разрешить членам группы wheel выполнять любую команду.... чтобы установить браузер СПУТНИК в altlinux 9.1, командой: sh имя_файла.run

    Ответить
  7. Всем добра! Через Putty на Windows зашёл на Armbian, который находится на другом девайсе и на который мне необходимо установить и запустить скрипт. Папка со скриптом лежит на рабочем столе Windows. Как мне установить и запустить свой скрипт из под винды?

    Ответить
  8. Реально ли сделать запуск скрипта по двойному клику с отображением окна терминала так же как в винде? Хотелось бы удобную отладку для вывода информации, так же интерактивный подход к скриптам как это реализовано в винде: "set /p var="; "pause"; "ctrl+c" (прерывания) и тому подобное. drag&drop в терминал как то коробит :/

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

    Ответить

Оставьте комментарий