【问题标题】:Difference Between . venv/bin/activate and ./venv/bin/activate之间的区别。 venv/bin/activate 和 ./venv/bin/activate
【发布时间】:2015-10-21 00:15:27
【问题描述】:

全部

我对运行 shell 脚本的格式有疑问 我遇到这个问题是我设置了一个虚拟环境

但是当我输入时

. venv/bin/activate

代码没有问题并成功运行。但是我知道使用其他方式运行它

 ./venv/bin/activate

bash 提示一个错误,说我没有权限这样做。

我不知道它们之间有什么区别,任何帮助将不胜感激

【问题讨论】:

    标签: python linux shell virtualenv


    【解决方案1】:

    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 所做的是在 current shell 中执行许多语句(将文件的内容放到这里),而不是像执行二进制文件一样启动一个新的 shell 进程(即./venv/bin/python)。

    【讨论】:

    • 另一种看待采购文件的方式是#include /path/to/envVarFile。 (取决于您的语言)。祝大家好运。
    • 嗨,感谢您的快速申请,另一个问题是,“.runfile”这种格式我可以在任何地方使用吗?因为当我使用“vim newfile”时,并在其中编写一些shell脚本,我不能使用“.newfile”在shell中运行脚本,它说没有这样的文件或目录,就像你的回答一样,我应该先使用“source newfile”然后使用“.newfile”来运行它?跨度>
    • 您需要先将文件写入磁盘,然后才能实际使用该文件。默认情况下,vim 不会创建 newfile,除非在 cmdline 模式下调用 :w(或等效项)。 . $filesource $file 之间也没有区别,它们都在当前 shell 的位置执行文件。
    • 好的,非常感谢,现在我从@Hackworth 那里得知 . command 本质上是源的别名。但我确实在尝试运行它之前:wq 它,所以我不知道如何使用“.newfile”,因为我曾经以这种方式使用它,但是脚本是其他人编写的,我尝试在我的方式,它不起作用。
    • 尝试一个更简单的例子,可能像这样:echo $FOO 并看到一个空行,然后创建一个名为 foo 的文件(在 vim 或其他格式中),并带有以下内容:export FOO=1,然后. foo,然后是echo $FOO
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2020-10-09
    • 2016-11-16
    • 2020-10-10
    • 2021-03-31
    相关资源
    最近更新 更多