回答
. 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 dot命令
- 2. Unix cat -n命令執行
- 3. 如何爲Unix命令行執行「 - 」* 60
- 4. Flex ant mxmlc命令vs執行命令
- 5. AIX(vs)Unix命令
- 6. 一次執行多個unix命令
- 7. hoew我執行這些Unix命令
- 8. 在unix中粘貼執行命令
- 9. 使用ssh執行Unix命令列表
- 10. UNIX中執行的命令C
- 11. 在Groovy中執行Unix cat命令?
- 12. 從python代碼執行Unix命令
- 13. 在hive腳本中執行unix命令
- 14. 用流星執行unix命令
- 15. 在ObjC中執行unix命令
- 16. 使用Java執行UNIX命令
- 17. 使用python執行多個Unix命令
- 18. 使用fork執行UNIX命令,執行execvp
- 19. 任何獲取最近執行命令結果的unix命令?
- 20. vs Addin失敗,試圖執行命令
- 21. 執行命令
- 22. 執行命令
- 23. 執行命令
- 24. PHP執行vs在linux終端執行相同的命令
- 25. 如何在java中執行unix命令或unix操作
- 26. 從Django運行unix命令
- 27. 從NSIS執行命令行命令
- 28. 命令行命令的執行時間
- 29. 從命令行執行Django Shell命令
- 30. 從Python執行命令行命令
如果我在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