Linux Labs

Bash: обработка текста и скрипты / Ступень 4 из 9

Скрипт — это файл с командами

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 6 · на машине · 7 мин

Кто читает скрипт

Скрипт — обычный текстовый файл. Сам он ничего не делает: его строки выполняет другая программа.

Скрипт — текстовый файл с командами оболочки. Команды в нём те же, что ты набираешь в терминале, только записаны заранее. Выполняет их интерпретатор — программа, которая читает файл строку за строкой и выполняет каждую. Для скрипта коллеги интерпретатор — bash, та же оболочка, что работает в твоём терминале.

Кто читает файл, зависит от способа запуска. Посмотри на первую строку скрипта и на /bin/sh, а потом запусти скрипт, назвав интерпретатор явно.

Упражнение · посмотреть

Найди, кто читает скрипт

В ~/script-lab посмотри первую строку backup-notes.sh и на что указывает /bin/sh, а потом запусти скрипт командой bash.

Сначала предположи

Права x у файла по-прежнему нет. Что сделает bash backup-notes.sh?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа

bash backup-notes.sh сам называет интерпретатор: bash открывает файл на чтение и выполняет его строки. Права на запуск ему не нужно — хватает права на чтение.

Первая строка #!/bin/bash — shebang: знаки #! и путь к интерпретатору. Она работает, когда файл запускают как программу — ./backup-notes.sh. Тогда ядро читает первую строку и запускает указанный в ней интерпретатор, передав ему файл. bash файл и sh файл на эту строку не смотрят: интерпретатор уже назван, а для оболочки строка с # — комментарий.

/bin/sh на Ubuntu — ссылка на dash. Это другая оболочка, маленькая и быстрая, и знает она только синтаксис, общий для всех оболочек. Строка 5 files=(todo.txt servers.txt) — список, такую запись понимает bash, а dash нет: отсюда Syntax error: "(" unexpected. Скрипт с #!/bin/bash запускают bash — явно или через shebang.

Ubuntu 24.04
Загрузка…