Разница между командами в сценарии bash и командами в терминале

Существуют ли различия между командами, которые вы вводите в терминал, и командами, которые вы включаете в сценарий?

  • Вывести поле ls -l с цифрами, сгруппированными по тысячам?
  • Что делает операционная система «Unix-Like»?
  • Как найти скорость интерфейса wlan?
  • Случайно использовалось перенаправление вывода> вместо трубы |
  • Как использовать инструмент diff, чтобы получить разницу между каталогами с библиотеками и источником?
  • Как прерывание клавиатуры заканчивается как сигнал процесса
  • Смонтируйте общий ресурс Windows без учетных данных root
  • Как войти в открытую беспроводную сеть?
  • Arch linux wifi работает вручную, как сделать его автоматическим?
  • Использование моста utils для подключения двух компьютеров через Linux
  • Арки linux и Gnome tap для щелчка не работают
  • Загрузка драйверов сторонних производителей до установки Fedora 14
  • 3 Solutions collect form web for “Разница между командами в сценарии bash и командами в терминале”

    Ваш терминал запускает оболочку (скорее всего, 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 ).

    • могут быть различия в конфигурации одного и того же интерпретатора для интерактивного сеанса и для выполнения скрипта.

    нет. сценарий – это список команд, которые вы можете ввести в терминал.

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

    наоборот, вы можете «сохранить» свои команды терминала внутри файла и превратить его в многоразовый скрипт и поделиться им со своей семьей и друзьями.

    Linux и Unix - лучшая ОС в мире.