2012-06-14 5 views
11

내가 (VIRTUALENV venv) 읽기 튜토리얼에서VIRTUALENV ". venv/빈/활성화"

, 난 가상을 활성화하는 2 가지 방법이 있습니다 읽기 VIRTUALENV라는 venv을 만들어 말할 수 대 "활성화/소스 venv/빈" ENV :

  1. . venv/bin/activate

  2. source venv/bin/activate

나는 둘 다 똑같은 것을 성취한다고 생각하지만, 무슨 일이 벌어지고 있는지 이해하지 못한다.

숫자 1의 경우에도 "." 현재 폴더를 의미합니까? 하지만 난 그냥 "venv/bin/activate"없이 "."입력하지 않으면 작동하지 않습니다.

도움이 될 것입니다.

답변

19

.source은 정확히 동일하지만, source은 더 읽기 쉽지만 모든 쉘에서 사용할 수있는 것은 아닙니다.

이 명령은 현재 쉘 내에서 스크립트의 내용을 실행하며이 스크립트는 activate의 경우 중요합니다. 스크립트가 수행하는 작업 중 하나는 현재 쉘 내의 환경 변수를 내보내고 수정하기 때문입니다.

./path/to/activate을 사용하여 실행하면 스크립트가 서브 쉘 내에서 실행되고 스크립트가 완료되고 서브 쉘이 종료되면 설정된 모든 환경 변수가 손실됩니다.

또한 숫자 1의 경우 "." 현재 폴더를 의미합니까?

.은 문맥에 따라 다른 의미를 갖는다. 경로로 사용할 때 "현재 폴더"만 의미합니다. http://en.wikipedia.org/wiki/Dot_%28Unix%29에서

:

도트 명령이 dot file, which is a dot-prefixed hidden file or hidden directory와 혼동되지 않습니다.

여담으로

, 당신이 사용하기 virtualenv 훨씬 쉽게 추가 래퍼 명령을 제공 virtualenvwrapper를 살펴 제안했다. evironment로 전환 virtualenvwrapper를 사용

는 호출하여 간단하게 수행됩니다

workon YOUR_ENV 
+0

출처는 배시입니다. –

+0

@ JohnP oops. 우연히 편집 한 것 같습니다. –

+0

우분투를 사용하고 있다면 대시를 사용하고 이전 버전/bin/bash에서 대쉬 (아직 작동하지 않을지는 확실하지 않음)를 가리켜 야하므로 소스는 작동하지 않지만 반드시 유의해야합니다. 잘 했어. –

4

. 명령은 본질적으로 source의 별명입니다. 그들은 현재 쉘에서 새로운 쉘을 분기하지 않고 주어진 스크립트를 실행합니다.

Here은 좋은 예입니다.

+1

다른 방법으로 주위 :'.'는 [POSIX 지정 명령] (http://pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html)이며 어디서나 사용할 수 있습니다.'source'는 별칭 (쉘의 하위 집합에서 사용 가능)입니다. –