[英]How does a subshell's executed lines get printed to the main shell without running the source command?
假設我有一個名為foo.sh的可執行外殼腳本。 里面是一個簡單的回聲“ Hello World”。 據我了解,當我通過./foo.sh運行此命令時,將調用一個子外殼,該外殼將執行echo“ Hello World”行。
那么,為什么在主外殼/終端中看到echo命令的輸出? 我認為您必須執行“ source ./foo.sh”而不是簡單的“ ./foo.sh”才能在當前shell中查看輸出。
你們中的任何一個都可以幫助澄清嗎?
標准輸出是繼承的 。 引用Bash參考手冊 :
命令執行環境
當要執行除內置函數或外殼函數以外的簡單命令時,將在包含以下內容的單獨執行環境中調用該命令。 除非另有說明,否則這些值是從Shell 繼承的。
- Shell的打開文件,以及通過重定向到命令指定的任何修改和添加
- ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.