回答
. name
將源文件稱爲name
放入當前shell。所以,如果一個文件中包含該
A=hello
然後,如果你來源,事後你可以參考一個叫A
變量,它包含你好。但是,如果你執行該文件(給予適當的執行權限和#!/interpreter
線),那麼這樣的事情是行不通的,因爲變量和其他的東西,劇本集將僅影響其子shell它在運行。
採購一個二進制文件沒有任何意義:Shell不會知道如何解釋二進制文件(記住它將該文件中出現的東西插入到當前shell中 - 就像C中舊的#include <file>
機制一樣)。例如:
head -c 10 /dev/urandom > foo.sh; . foo.sh # don't do this at home!
bash: �ǻD$�/�: file or directory not found
執行的二進制文件,但是,並做當然有很大的意義。所以通常你只想命名你想要執行的文件,在特殊情況下,比如上面的A=hello
,你想要一個文件。
使用 「source
」 或 「.
」 導致的命令在當前的進程中運行。將腳本作爲可執行文件運行會爲其提供自己的進程。
如果你想設置在當前的shell(你不能在一個單獨的進程做的)環境變量或要中止腳本不中斷你的shell(您可以在一個只有做這個最重要單獨的過程)。
該流程的區別爲我澄清了一切。 – Kvass 2013-12-18 17:37:25
第一個執行命令。第二個是在另一個腳本中包含shell腳本的簡寫。
此語法用於「加載」並解析腳本。當你有一個腳本與一堆其他腳本有共同的功能時,它是非常有用的,你可以「點包含」它。有關詳細信息,請參閱http://tldp.org/LDP/abs/html/internal.html(向下滾動到「點」命令)。
運行「runme」會創建一個新的進程,它將以很小的方式進行並且不會影響你的shell。
運行「。runme」將允許腳本「runme」更改您的環境變量,更改目錄以及您可能希望爲其執行的各種其他操作。它只能這樣做,因爲它正在被已經爲你運行的shell進程解釋。因此,如果您將bash作爲登錄shell運行,則只能使用「。」。帶有bash腳本的符號,而不是(例如)C shell腳本中的二進制文件。
- 1. 如何爲Unix命令行執行「 - 」* 60
- 2. Flex ant mxmlc命令vs執行命令
- 3. 在Groovy中執行Unix cat命令?
- 4. 使用Java執行UNIX命令
- 5. 從SAS執行多個unix命令
- 6. UNIX中執行的命令C
- 7. 使用ssh執行Unix命令列表
- 8. 從python代碼執行Unix命令
- 9. 用流星執行unix命令
- 10. 使用python執行多個Unix命令
- 11. AIX(vs)Unix命令
- 12. 使用fork執行UNIX命令,執行execvp
- 13. 任何獲取最近執行命令結果的unix命令?
- 14. 執行命令
- 15. 執行命令
- 16. 執行命令
- 17. 如何在java中執行unix命令或unix操作
- 18. 從Django運行unix命令
- 19. 從NSIS執行命令行命令
- 20. 從Perl執行命令行命令?
- 21. 從命令行執行Django Shell命令
- 22. 從Python執行命令行命令
- 23. 執行UNIX使用運行時類從Java命令
- 24. python:os.system不執行shell命令
- 25. 發生兩列的行UNIX命令行
- 26. python執行並行命令
- 27. MySQL命令行執行
- 28. PHP +命令行執行
- 29. java命令行執行
- 30. FxCop +命令行執行?
如果我在PuTTy終端中執行第二個操作,它會關閉... – schnaader 2009-05-28 19:10:44
相關:http://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script -and-sourcing-a-bash-scrip/176788#176788 – lesmana 2011-12-04 18:34:53