`exec < somefile` ведет себя так же, как `source somefile`?

`exec < somefile` ведет себя так же, как `source somefile`?
$ cat somefile 
sleep 100
$ exec < somefile 
$ sleep 100

Ведет ли exec < somefileсебя так же, как , source somefileза исключением того, что процесс его вызова завершается после завершения?

Спасибо.

решение1

Эффект схож, но поведение не совсем одинаковое.

exec < somefileподключает стандартный ввод к somefile, поэтому оболочка начинает чтение из этого файла, а не с терминала, к которому она в данный момент подключена. (Ну, по крайней мере, bash так делает, Zsh ведет себя иначе.) Фактически это приводит к тому, что текущая оболочка обрабатывает содержимое somefile, как это было бы с source somefile. После того, как он исчерпывает somefile, оболочка завершает работу.

Связанный контент