. файл для выполнения файла в ударе и> файл к пустому содержанию файла

Почему делает использование . file в ударе выполняют файл, даже если это не и исполняемый файл? Это, потому что это использует текущую сессию удара для выполнения его так, это работает как ввод bash file?

Кроме того, вдоль подобных строк. Я знаю тот ввод > file удаляет содержание файла. Но почему? Я понимаю, что это отправляет стандартный вход в файл. Но разве стандарт не вводится клавиатура? Таким образом, разве я не должен переходить к новой строке в вещах типа и теории?Я не понимаю.

-1
задан 18 October 2015 в 15:15

2 ответа

В первую очередь . file не выполняет файл, он поставляет его. Тот мог бы походить на педантичный пункт, но есть важное различие. Когда Вы выполняете файл, им управляют в его собственной подраковине; любые переменные, определенные в нем, например, не будут размножены к родительской сессии. Чтобы проиллюстрировать, рассмотрите этот сценарий (foo.sh), который просто устанавливает переменную и затем печатает ее:

foo="bar"
echo "In the script, foo is $foo"

Теперь, давайте установим переменную foo во что-то, затем давайте управлять тем сценарием и, как только это закончено, echo $foo:

$ foo="baz" 
$ bash foo.sh 
In the script, foo is bar
$ echo $foo
baz

, Как Вы видите, $foo, был установлен в сценарии, но это не изменило ценность переменной в родительской раковине. Контрастное вышеупомянутое с тем, что происходит, если мы поставляем сценарий вместо этого:

$ . foo.sh 
In the script, foo is bar
$ echo $foo
bar

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

<час>

Эти > file более просто. > оператор открывает файл (или создает его, если это не существует) для написания, и немедленно уже переписывает что-либо в файле. Поэтому, если Вы просто будете бежать > file ни с чем иным, то эти > освободит файл, если он будет существовать.

5
ответ дан 30 September 2019 в 07:45

Постарайтесь не задавать два несвязанных вопроса на той же почте.

1: это точно не работает как bash file потому что последний пробег новая раковина в то время как . использование та же текущая раковина. Это работает как source file.

2: вход стандарта по умолчанию - действительно обычно клавиатура, но с управлением > file, нет никакой команды, чтобы бежать. Раковина просто обрабатывает переназначения, тогда заканчивает обработку (недостающей) команды. То, что Вы описываете, было бы cat > file.

2
ответ дан 30 September 2019 в 07:45

Другие вопросы по тегам:

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