Root NationСтатьиLinuxГик-чтиво #3 - командная оболочка и запуск скриптов bash

Гик-чтиво #3 – командная оболочка и запуск скриптов bash

-

В прошлом материале я немного поведал о файловой структуре UNIX-подобных операционных систем. Теперь, зная как выглядит путь к тому или иному файлу, вернемся в самое начало и запустим наш скрипт на выполнение.

Предположим, что мы его создали в текстовом редакторе с графическим интерфейсом, дав ему имя test.sh, и сохранили в домашней директории пользователя user. Тогда путь к скрипту будет такой:

/home/user/test.sh

Но простой ввод этой команды в консоли ни к чему не приведет. Так как оболочка будет думать, что мы запускаем исполняемый файл из домашней директории, которым test.sh изначально не является. То есть, нам необходимо дать права файлу на исполнение или в начале команды указать программу, которая выполнит наш скрипт. Для нашего примера это будет командный интерпретатор bash. Таким образом команда будет выглядеть так:

bash /home/user/test.sh

То же самое мы можем проделать и для других интерпретируемых языков, например, lua. Даже если мы воспользуемся первым способом и сделаем lua-файл исполняемым. Но как тогда командный интерпретатор выполнит этот скрипт, ведь lua и sh являются разными языками? Очень просто: в таких скриптах первой строкой идет объявление программы-интерпретатора, к которой командная оболочка обратится за выполнением:

#!/bin/sh
#!/usr/bin/lua
#!/usr/bin/perl -w

Помните упоминание подобной строки из первого материала рубрики?

Но прежде, чем писать “Продолжение следует…”, стоит упомянуть о проблеме, с которой вы можете столкнуться при вводе адреса в командной оболочке. Дело в том, что если в адресе будут встречаться пробелы, то его необходимо поместить в кавычки:

'/home/new user/test.sh'

Можно в одинарные, но если в адресе попадается апостроф, тогда придется в двойные:

"/home/it's a new user/test.sh"

Вся суть в оболочке, которая будет думать, что адрес закончился перед первым пробелом или апострофом.

Все исполняемые файлы, с которыми можно работать из любой директории, как упомянутые ранее uname и tree, находятся в директории /bin или /usr/bin (все зависит от дистрибутива). Таким образом, если вы хотите также запускать свой скрипт, то необходимо переместить его в эти директории.

Продолжение следует.

Читайте далее: Гик-чтиво #4 – сокращения в командной оболочке
Subscribe
Notify of
guest

3 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments