
$ cat somefile
sleep 100
$ exec < somefile
$ sleep 100
Ведет ли exec < somefile
себя так же, как , source somefile
за исключением того, что процесс его вызова завершается после завершения?
Спасибо.
решение1
Эффект схож, но поведение не совсем одинаковое.
exec < somefile
подключает стандартный ввод к somefile
, поэтому оболочка начинает чтение из этого файла, а не с терминала, к которому она в данный момент подключена. (Ну, по крайней мере, bash так делает, Zsh ведет себя иначе.) Фактически это приводит к тому, что текущая оболочка обрабатывает содержимое somefile
, как это было бы с source somefile
. После того, как он исчерпывает somefile
, оболочка завершает работу.