调用Unix shell脚本的方法(“。”,“source”)

时间:2012-09-16 23:40:16

标签: bash unix

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

. bin/activate

或者这个:

source bin/activate
  1. 为什么当前目录“。”作为一个命令工作?

  2. 为什么要使用“source”或“。”什么?为什么不简单地“bin / activate”?

  3. (我对此进行了一些网络搜索,但“。”和“来源”获得了大量不良点击。)

2 个答案:

答案 0 :(得分:6)

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

    $ cat script
    VARIABLE=something
    $ echo $VARIABLE
    
    $ ./script 
    $ echo $VARIABLE
    
    $ . ./script
    $ echo $VARIABLE
    something
    

答案 1 :(得分:2)

你可能会使用“。”的另一个原因。或“source”执行脚本是因为有问题的脚本没有以“#!/ bin / bash”(shebang)开头,它告诉shell哪个程序应该解释相关脚本。