Verhält sich „exec < somefile“ genauso wie „source somefile“?

Verhält sich „exec < somefile“ genauso wie „source somefile“?
$ cat somefile 
sleep 100
$ exec < somefile 
$ sleep 100

Verhält es exec < somefilesich genauso wie source somefile, außer dass der aufrufende Prozess nach seiner Fertigstellung beendet wird?

Danke.

Antwort1

Die Wirkung ist ähnlich, das Verhalten ist jedoch nicht genau dasselbe.

exec < somefileverbindet die Standardeingabe mit somefile, sodass die Shell mit dem Lesen aus dieser Datei beginnt und nicht aus dem Terminal, mit dem sie aktuell verbunden ist. (Zumindest tut das Bash, Zsh verhält sich anders.) Dies führt effektiv dazu, dass die aktuelle Shell den Inhalt von verarbeitet somefile, wie sie es bei tun würde source somefile. Sobald es erschöpft ist somefile, wird die Shell beendet.

verwandte Informationen