2015-10-21 22 views
0

所有之間的區別。 VENV /斌/啓動和./venv/bin/activate

我有一個關於運行shell腳本 的格式問題,我會遇到這樣的問題是,我建立一個虛擬的環境

但是,當I型

. venv/bin/activate 

的代碼有沒有問題,運行它successfully.But我知道其他的方式來運行它使用

./venv/bin/activate 

bash提示錯誤,表示我沒有權限執行此操作。

我不知道什麼是它們之間的區別,任何幫助將感激

回答

2

通過的virtualenv創建的activate腳本實際上並不執行任何一個標準的腳本,做,但它的東西,還限定環境變量現有的bash會話。請注意該文件中的註釋:

# This file must be used with "source bin/activate" *from bash* 
# you cannot run it directly 

. venv/bin/activate實際上是同義詞sourcevenv/bin/activate。從本質上講,virtualenv所做的是在當前的shell中執行多個語句(將文件的內容輸入到此處),而不是像執行二進制文件(即./venv/bin/python)那樣啓動新的shell進程。

+0

另一種考慮源文件的方式就像'#include/path/to/envVarFile'。 (取決於你的語言)。祝你們好運。 – shellter

+0

您好,感謝您的快速申請,另一個問題是,「。runfile」這種格式我可以在任何地方使用嗎?,因爲當我使用「vim newfile」,並在其中編寫一些shell腳本時,我不能使用「 。newfile「在shell中運行腳本,它說沒有這樣的文件或目錄,就像你的答案一樣,我應該先使用」source newfile「,然後使用」.newfile「來運行它? – Wallace

+0

在實際使用文件之前,您需要將文件寫出到磁盤。默認情況下'vim'不會創建'newfile',除非在cmdline模式下調用':w'(或者等效)。 '也沒有區別。 $ file'和'source $ file',它們都執行當前shell的in-place文件。 – metatoaster