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

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

  • Горячие клавиши Ch, Cm в bash
  • Откройте новый bash с полномочиями sudo без повторного ввода пароля
  • Как получить услугу на удаленном сервере CentOS 7 для сохранения после выхода из системы?
  • Соединения SSH, работающие в фоновом режиме, не выводятся, если несколько соединений были запущены одной и той же оболочкой
  • Вход в систему с конкретной оболочкой при входе в терминал
  • Делайте работу «читать», когда не фокусируетесь на терминале
  • Отключить гашение экрана на текстовой консоли
  • Emacs ansi-term и термин не работает хорошо, когда я ssh в удаленную машину
  • 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 - лучшая ОС в мире.