1

TurboGears virtualenvをアクティブ化するには(例として)、次のようにします。

. bin/activate

またはこれ:

source bin/activate
  1. 現在のディレクトリが「。」なのはなぜですか。コマンドとして機能しますか?

  2. 「ソース」または「。」を使用する理由 まったく?単に「ビン/アクティブ化」しないのはなぜですか?

(私はこれについて少しWeb検索を行いましたが、「。」と「source」は多くの悪いヒットを取得します。)

4

2 に答える 2

6
  1. .その文脈では「現在のディレクトリ」を意味するものではありません。の省略形ですsource
  2. .スクリプトを(またはを使用して)調達すると、サブシェルを開始するのではなく、現在のsourceシェルのコンテキストでスクリプトが実行されます。つまり、現在のシェルの環境に変更を加えることができます。スクリプトを実行するだけではそれはできません。例:

    $ cat script
    VARIABLE=something
    $ echo $VARIABLE
    
    $ ./script 
    $ echo $VARIABLE
    
    $ . ./script
    $ echo $VARIABLE
    something
    
于 2012-09-16T23:42:10.463 に答える
2

「。」を使用するもう1つの理由 または、スクリプトを実行するための「ソース」は、問題のスクリプトが「#!/ bin / bash」(シバン)で始まらない場合です。これは、問題のスクリプトを解釈するプログラムをシェルに指示します。

于 2012-09-17T01:51:56.760 に答える