Запуск скриптов формата SH в Linux

Сначала мы предлагаем создать проверочный скрипт, который в будущем будем запускать. Конечно, вы можете пропустить данный этап, если сценарий командной строки уже имеется. Отметим, что сейчас мы не будем разбирать синтаксис языков программирования, а лишь расскажем, что каждому под силу создать собственный скрипт или вставить содержимое в файл для дальнейшего его вызова по обстоятельствам.
-
Запустите «Терминал» удобным для вас образом, например, через меню приложений или горячую клавишу Ctrl + Alt + T.








Как видим, ничего сложного в создании собственных скриптов для Bash нет, однако вся особенность заключается в знании кода. Придется либо писать его с нуля самому, либо скопировать готовые решения из свободных источников. После того, как скрипт успешно реализован в файле, можно смело переходить к следующему этапу.
Шаг 2: Настройка скрипта для утилиты env
Этот шаг тоже является не обязательным, однако без него не обойтись пользователям, которые задействуют утилиту env для запуска скрипта. Без предварительной настройки он просто не откроется, поскольку изначально не были получены соответствующие разрешения. Добавляются они через команду sudo chmod ugo+x script.sh , где script.sh — название необходимого файла.

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

Шаг 3: Запуск имеющегося скрипта
Перейдем к основному шагу, который и заключается в непосредственном запуске имеющегося скрипта. Для начала рассмотрим простую команду, которая имеет вид ./script.sh и отвечает за запуск файла из текущего места расположения. Результат вывода вы видите на приведенном ниже скриншоте. За пример мы взяли созданный ранее сценарий. По тому же принципу можно указать и полный путь к объекту, чтобы строка изменилась, например, на /home/user/script.sh .

В Linux имеется системная переменная PATH. В нее входит ряд папок, отвечающих за выполнение самых разнообразных действий. Одна из них называется /usr/local/bin и используется для ручной инсталляции программ. Если вы не желаете постоянно указывать полный путь к скрипту для его активации, просто добавьте его в одну из папок PATH. Для этого используется строка cp script.sh /usr/local/bin/script.sh .

После этого запуск будет доступен путем простого ввод названия файла с учетом расширения.

Второй метод открытия заключается в одновременном вызове оболочки. Вам следует переместиться в директорию со скриптом и написать bash script.sh . Этот метод хорош тем, что позволяет не вписывать полный путь к объекту или предварительно добавлять его в соответствующие директории PATH.

Это все, что мы хотели рассказать о взаимодействии со скриптами в Linux. Вам остается только создать соответствующий файл или открыть уже имеющийся, используя приведенные выше рекомендации.
Мы рады, что смогли помочь Вам в решении проблемы.
Как мне запустить .sh файлы?
Всякий раз, когда я открываю файл .sh, он открывает его в gedit вместо терминала. Я не могу найти ни одной опции, похожей на . Щелкните правой кнопкой мыши → Открыть с помощью → Другое приложение . → Терминал .
Как открыть этот файл в терминале?
16 ответов
Дайте разрешение на выполнение вашего сценария:
И на выполнение вашего сценария:
Так как . ссылается на текущий каталог: если yourcript.sh находится в текущем каталоге, вы можете упростить это до:
Вы также можете использовать . уловки, с предложением других ответов.
chmod + x filename.sh , если вы уже перешли по пути к файлу, затем запустите файл любой из этих команд:
Ну, я тоже столкнулся с той же самой проблемой. Я хотел выполнить .sh файл и он открылся с помощью Gedit на CentOS 7. Итак, вот что я сделал:
- -перешёл к пути к файлу .sh , который я хотел выполнить.
- -открыл терминал.
- -и просто перетащил и бросил в окно терминала, и он автоматически забрал этот файл вместе с путём в качестве входного.
- -Hit Enter — и вы готовы к работе!
Есть несколько способов сделать это.
Вариант 1
В терминале доступ к каталогу, в котором находится Bash-файл, осуществляется с помощью cd (каталог изменений).
Ex. cd Downloads
Это также работает с .run файлами. Пример такого использования на этой веб-странице при обновлении Rhythmbox.
Вариант 2
В терминале перейдите в каталог, в котором находится bash-файл.
Запустите chmod +x . sh
В Nautilus, откройте файл.
Для Ubuntu 18.04, есть небольшие изменения, так как вы не получаете всплывающее диалоговое окно.
Итак, что вам нужно сделать:
Щелкните правой кнопкой мыши на Файлы, выберите Параметры > Выберите вкладку Поведение > Отметьте «Спросить, что делать» в разделе Исполняемый текстовый файл.
Теперь, когда вы дважды щелкните на любом .sh файле, вы получите всплывающее окно, там вы можете выбрать опцию «запустить в терминале», чтобы запустить ваш .sh файл.

2 основных шага.
в терминале, используйте gedit, чтобы написать и сохранить скрипт с расширением «.sh» на рабочем столе. (но можно использовать любой текстовый редактор)
откройте Nautilus и щелкните правой кнопкой мыши файл script.sh.
в разделе свойств установите флажок «Разрешить выполнение файла ..»
в меню Nautilus, щелкните файл, затем настройки , затем поведение
проверяет «запускать исполняемые текстовые файлы при их открытии».
Теперь, когда вы дважды щелкните файл на рабочем столе, он должен запуститься. нет необходимости в . или ./
Проблема, которую я нашел на нескольких дистрибутивах, заключается в том, что они скрыли опцию предпочтений в Nautilus, но исправить ее в Ubuntu и других дистрибутивах, использующих Gnome3 — это то же самое (буквально только что сделала версию Fedora и разместила настоящее исправление, чтобы напомнить мне, как это будет происходить в будущем).
Запустите dconf-редактор dconf-редактор , используя нужную вам учетную запись пользователя, т.е. НЕ root
Перейдите к следующей схеме:
Измените параметр по умолчанию на не открывающийся по умолчанию:
Найдите executable-text—activation щелкните по слову display и измените его на ask
, что даст вам возможность редактировать, просматривать или запускать файл вперёд
Перейти в каталог, где находится файл .sh , используя cd . В этом примере я сохранил свой файл sh как
/ Desktop / shell_practice / test.sh
сначала выполните pwd , чтобы выяснить, где вы находитесь, и если он возвращает / home / username (где username — ваше настоящее имя пользователя), вы можете запустить
. Если вам кажется, что вы находитесь где-то еще, вы можете использовать абсолютный путь
— все это способы описания одного и того же места. Как только вы доберетесь до места, где находится ваш скрипт, введите
. Если вы видите файл sh в выводе, вы можете использовать chmod , чтобы сделать его исполняемым. В моем случае, помните, имя файла test.sh , поэтому я бы запустил
. Теперь, когда мы находимся в том же каталоге, что и сценарий, мы должны указать оболочке, которую мы хотим выполнить. файл, указав его местоположение ./ (текущий каталог, за которым следует разделитель пути, чтобы отличить его от имени файла). Чтобы запустить свой файл, я наберу:
Если ваш скрипт был написан правильно, он будет работать без ошибок .
Вот живой пример: 
Запуск скрипта 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:

Или полный путь от корня:

Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ — /usr/local/bin.
cp script.sh /usr/local/bin/script.sh
Теперь вы можете выполнить:

Это был первый способ вызвать скрипт, но есть еще один — мы можем запустить оболочку и сразу же передать ей скрипт, который нужно выполнить. Вы могли редко видеть такой способ с bash, но он довольно часто используется для скриптов php или python. Запустим так наш скрипт:

А если нам нужно запустить скрипт на php, то выполните:
Вот так все просто здесь работает. Так можно запустить скрипт как фоновый процесс, используйте символ &:
Даже запустить процесс linux не так сложно.
Выводы
Как видите, запуск скрипта sh в linux — это довольно простая задача, даже если вы еще плохо знакомы с терминалом. Существует действительно много скриптов и некоторые из них вам возможно придется выполнять. Если у вас остались вопросы, спрашивайте в комментариях!