调用Unix shell脚本的方法(".","source")

Hew*_*lff 1 unix bash

要激活TurboGears virtualenv(仅作为示例),请执行以下操作:

. bin/activate
Run Code Online (Sandbox Code Playgroud)

或这个:

source bin/activate
Run Code Online (Sandbox Code Playgroud)
  1. 为什么当前目录"." 作为一个命令工作?

  2. 为什么要使用"来源"或"." 什么?为什么不简单地"bin/activate"?

(我对此进行了一些网络搜索,但是"."和"来源"得到了很多糟糕的点击.)

Car*_*rum 6

  1. .并不意味着该上下文中的"当前目录".这只是简写source.
  2. 获取脚本(使用.source)在当前 shell的上下文中运行脚本,而不是启动子shell.这意味着它可以对您当前的shell环境进行修改.简单地运行脚本不能这样做.例:

    $ cat script
    VARIABLE=something
    $ echo $VARIABLE
    
    $ ./script 
    $ echo $VARIABLE
    
    $ . ./script
    $ echo $VARIABLE
    something
    
    Run Code Online (Sandbox Code Playgroud)