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

Верхний регистр S - то, потому что каталог не имеет, выполняют полномочия для группы. В некотором роде это указывает на "ошибку", как Вы говорите:

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

(источник: https://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html)

Однако Вы отрицаете, что разрешение для элементов группы вводит каталог.

13
28.12.2012, 10:20
3 ответа

Ваш терминал выполняет оболочку (по всей вероятности bash), который является тем, просящим Ваши команды, и выполняет их.

Кроме того, этого интерактивного режима можно также использовать оболочку для команд выполнения из файла. Для выполнения команд в файле, можно или назвать оболочку непосредственно как bash script или можно запустить файл с "хижины" #!/bin/bash и сделайте это исполняемым файлом (chmod +x script). Затем можно рассматривать сценарий как двоичный файл и выполнить его, например, как ./script или помещенный это в место, где Вы окружаете, ищет его. (echo $PATH)

По всей вероятности и Ваша интерактивная оболочка и оболочка раньше работали, bash. С точки зрения "первого дня, изучая Linux" удар работает точно то же в обоих режимах. - Намного позже Вы могли бы споткнуться о незначительных различиях. Если бы Вы действительно хотите знать о подробно, я предложил бы читать 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 даже не видимо к внутреннему сценарию.

7
27.01.2020, 19:53

В целом ответ был бы "нет", команды в оболочке являются тем же в сценариях в синтаксисе и семантике.

Но существует набор маленьких нюансов, связанных с конфигурацией среды (какие переменные привыкли и к тому, что они установлены).

  • интерактивная предпочтительная оболочка для Linux является ударом, но пишущий сценарий часто использует другие интерпретаторы (sh, который является предшественником bash, ksh, который на одном уровне с ударом), таким образом, необходимо принять во внимание, какая оболочка используется (текущая оболочка s, имя традиционно сохранено в переменной SHELL, попытайтесь ввести echo $SHELL).

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

1
27.01.2020, 19:53

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

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

Обратно пропорционально можно "сохранить" терминальные команды в файле и превратить его в допускающий повторное использование сценарий и совместно использовать его с семейством и друзьями.

-1
27.01.2020, 19:53
  • 1
    строки, вставляющем содержание, эквивалентен определению источника сценария. Это изменит весь вид опций в текущей оболочке, которая не была бы изменена путем простого запущения скрипта. –  michas 27.12.2012, 01:44
  • 2
    , Вы корректны. но до его вопросов идет. Я думаю, что мы можем сказать, что это весьма схоже. но да, для перевода, что michas, сказанный в терминах noob'er. вставка содержания сценария эквивалентна, чтобы сделать source script_file. который отредактирует огибающий Вар в текущем контексте. при запущении скрипта как ./script_file не изменит ENV, если export используется явно. –  Mathieu J. 27.12.2012, 04:34
  • 3
    даже с export для сценария не возможно изменить любые переменные оболочки вызова. То же идет для вещей как PWD, определенные псевдонимы, функции и подобные вещи. Они могут быть изменены только в интерактивном режиме или путем определения источника файла. Но да, который является, вероятно, ничем, что кто-то наткнется на первый день. :) –  michas 27.12.2012, 10:29
  • 4
    @michas: Ну, еще лучше дать корректное описание. Если новичок будет амбициозен, и будет иметь привычки работы, то он возьмет быстро. Если мы попытаемся сказать рассказ ребенка, то мы просто наткнемся на ноги и произведем непостижимое впечатление - кроме того, новичок может вернуться, позже. В то время как я не считаю меня новичком, существует много вещей, которые я не знаю, и я был бы оскорблен, если бы кто-либо отказал в чем-нибудь отвечающем на мои вопросы, потому что "Вы еще не там, юниор". –  Emanuel Berg 28.12.2012, 04:41

Теги

Похожие вопросы