Ответы:
Ваш терминал запускает оболочку (скорее всего 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, определенные псевдонимы, функции и тому подобное. Они могут быть изменены только в интерактивном режиме или путем поиска файла. Но да, это, вероятно, ничего, что кто-то наткнется в первый день. :)