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

Оставьте свой Email для того чтобы получать анонсы новых статей и полезную информацию о Linux по электронной почте
Pеклама
Посмотреть детали

Если вы искали альтернативу почтовому сервису Gmail, который уважает вашу конфиденциальность, обратите внимание на ProtonMail. Ваши письма автоматически шифруются сквозным шифрованием, поэтому читать их можете только вы и получатель. ProtonMail не собирает ваши персональные данные и базируется в Швейцарии, где действуют одни из самых строгих законов о конфиденциальности. Посмотреть детали

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

    Ответить

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