Абсолютно не глупый вопрос! Проверьте это (сначала), затем это , и это .
Эмануэль Берг
Ответы:
7
Ваш терминал запускает оболочку (скорее всего 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
$
В общем случае ответ будет «нет», команды в оболочке одинаковы в сценариях, в синтаксисе и семантике.
Но есть куча мелких нюансов, связанных с настройкой среды (какие переменные используются и для чего они установлены).
интерактивной оболочкой для Linux является bash, но в сценариях часто используются другие интерпретаторы ( shчто является предшественником bash, kshто же самое, что bash), поэтому необходимо учитывать, какая оболочка используется (имя текущей оболочки традиционно хранится в переменной SHELL, попробуйте набрать echo $SHELL).
могут быть различия в конфигурации одного и того же интерпретатора для интерактивного сеанса и для выполнения скрипта.
Нет. Сценарий - это список команд, которые вы можете ввести в терминале.
Вы можете вставить весь скрипт в терминал, и результат будет таким же, как и при его запуске.
И наоборот, вы можете «сохранить» свои команды терминала внутри файла, превратить его в повторно используемый скрипт и поделиться им со своей семьей и друзьями.
Нет. Вставка содержимого эквивалентна поиску сценария. Это изменит все виды параметров в текущей оболочке, которые не будут изменены простым запуском скрипта.
Михас
ты прав. но насколько его вопросы идут. Я думаю, что мы можем сказать, что это очень похоже. но да, чтобы перевести то, что сказал Михас, в терминах noob'er. вставка содержимого сценария эквивалентна операции source script_file. который будет редактировать переменные ENV в текущем контексте. во время выполнения сценария as ./script_fileне изменяет ENV, если exportне используется явно.
Матье Дж.
1
Нет. Даже при exportэтом сценарий не может изменять какие-либо переменные вызывающей оболочки. То же самое касается таких вещей, как PWD, определенные псевдонимы, функции и тому подобное. Они могут быть изменены только в интерактивном режиме или путем поиска файла. Но да, это, вероятно, ничего, что кто-то наткнется в первый день. :)
Михас
1
@michas: Ну, еще лучше дать правильное описание. Если новичок амбициозен и имеет рабочие привычки, он или она быстро подберут. Если мы попытаемся рассказать сказку ребенку, мы просто упадем на ноги и создадим непостижимое впечатление - кроме того, новичок может вернуться позже. Хотя я не считаю себя новичком, есть много вещей, которые я не знаю, и я был бы оскорблен, если бы кто-нибудь отказался отвечать на мои вопросы, потому что «ты еще не там, младший».
Ответы:
Ваш терминал запускает оболочку (скорее всего
bash
), которая запрашивает ваши команды и запускает их.Помимо этого интерактивного режима вы также можете использовать свою оболочку для запуска команд из файла. Чтобы выполнить команды в вашем файле, вы можете либо напрямую вызвать оболочку,
bash script
либо вы можете запустить свой файл с «shebang»#!/bin/bash
и сделать его исполняемым (chmod +x script
). Затем вы можете рассматривать скрипт как двоичный файл и выполнять его, например, как./script
или поместить его в место, где его ищет оболочка. (echo $PATH
)Скорее всего, и ваша интерактивная оболочка, и оболочка, используемая для запуска
bash
. С точки зрения «первого дня обучения Linux» Bash работает одинаково в обоих режимах. - Гораздо позже вы можете наткнуться на небольшие различия. Если вы действительно хотите узнать о деталях, я бы предложил почитатьman bash
и найти места с упоминанием «интерактивный». (Вы можете найти страницу справочника, нажав/
.)Важно отметить, что скрипт запускается как новый процесс. Это особенно означает, что переменные, установленные в скрипте, не видны в вызывающей оболочке.
Без экспорта
a
даже не виден внутренний скрипт.источник
В общем случае ответ будет «нет», команды в оболочке одинаковы в сценариях, в синтаксисе и семантике.
Но есть куча мелких нюансов, связанных с настройкой среды (какие переменные используются и для чего они установлены).
интерактивной оболочкой для Linux является bash, но в сценариях часто используются другие интерпретаторы (
sh
что является предшественникомbash
,ksh
то же самое, что bash), поэтому необходимо учитывать, какая оболочка используется (имя текущей оболочки традиционно хранится в переменнойSHELL
, попробуйте набратьecho $SHELL
).могут быть различия в конфигурации одного и того же интерпретатора для интерактивного сеанса и для выполнения скрипта.
источник
Нет. Сценарий - это список команд, которые вы можете ввести в терминале.
Вы можете вставить весь скрипт в терминал, и результат будет таким же, как и при его запуске.
И наоборот, вы можете «сохранить» свои команды терминала внутри файла, превратить его в повторно используемый скрипт и поделиться им со своей семьей и друзьями.
источник
source script_file
. который будет редактировать переменные ENV в текущем контексте. во время выполнения сценария as./script_file
не изменяет ENV, еслиexport
не используется явно.export
этом сценарий не может изменять какие-либо переменные вызывающей оболочки. То же самое касается таких вещей, как PWD, определенные псевдонимы, функции и тому подобное. Они могут быть изменены только в интерактивном режиме или путем поиска файла. Но да, это, вероятно, ничего, что кто-то наткнется в первый день. :)