Ответы:
Ваш терминал запускает оболочку (скорее всего bash
), которая запрашивает ваши команды и запускает их.
Помимо этого интерактивного режима вы также можете использовать свою оболочку для запуска команд из файла. Чтобы выполнить команды в вашем файле, вы можете либо напрямую вызвать оболочку, bash script
либо вы можете запустить свой файл с «shebang» #!/bin/bash
и сделать его исполняемым ( chmod +x script
). Затем вы можете рассматривать скрипт как двоичный файл и выполнять его, например, как ./script
или поместить его в место, где его ищет оболочка. ( echo $PATH
)
Скорее всего, и ваша интерактивная оболочка, и оболочка, используемая для запуска bash
. С точки зрения «первого дня обучения Linux» Bash работает одинаково в обоих режимах. - Гораздо позже вы можете наткнуться на небольшие различия. Если вы действительно хотите узнать о деталях, я бы предложил почитать man bash
и найти места с упоминанием «интерактивный». (Вы можете найти страницу справочника, нажав /
.)
Важно отметить, что скрипт запускается как новый процесс. Это особенно означает, что переменные, установленные в скрипте, не видны в вызывающей оболочке.
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
Без экспорта a
даже не виден внутренний скрипт.
В общем случае ответ будет «нет», команды в оболочке одинаковы в сценариях, в синтаксисе и семантике.
Но есть куча мелких нюансов, связанных с настройкой среды (какие переменные используются и для чего они установлены).
интерактивной оболочкой для Linux является bash, но в сценариях часто используются другие интерпретаторы ( sh
что является предшественником bash
, ksh
то же самое, что bash), поэтому необходимо учитывать, какая оболочка используется (имя текущей оболочки традиционно хранится в переменной SHELL
, попробуйте набрать echo $SHELL
).
могут быть различия в конфигурации одного и того же интерпретатора для интерактивного сеанса и для выполнения скрипта.
Нет. Сценарий - это список команд, которые вы можете ввести в терминале.
Вы можете вставить весь скрипт в терминал, и результат будет таким же, как и при его запуске.
И наоборот, вы можете «сохранить» свои команды терминала внутри файла, превратить его в повторно используемый скрипт и поделиться им со своей семьей и друзьями.
source script_file
. который будет редактировать переменные ENV в текущем контексте. во время выполнения сценария as ./script_file
не изменяет ENV, если export
не используется явно.
export
этом сценарий не может изменять какие-либо переменные вызывающей оболочки. То же самое касается таких вещей, как PWD, определенные псевдонимы, функции и тому подобное. Они могут быть изменены только в интерактивном режиме или путем поиска файла. Но да, это, вероятно, ничего, что кто-то наткнется в первый день. :)