~によるとフラスコ公式チュートリアル:
プロジェクトの作業をしたいときはいつでも、その環境を有効にするだけです。 OS X および Linux では、次のことを行います。
$ . venv/bin/activate
これはうまくいきます。しかし./venv/bin/activate
、との両方を実行しようとすると、両方をvenv/bin/activate
取得します-bash: venv/bin/activate: Permission denied
。
私の質問は:それは何をしますか.
?
答え1
この場合、ドットはシェルキーワードと同義語ですsource
。これは、ファイルを読み込み、コマンドラインに直接入力したかのように各行を実行することです。権限に関する限り、必要なのはファイルへの読み取りアクセスだけです。
シェルコマンドを使用してファイルを取得することは、シェルスクリプトを呼び出すのとは異なります。シェルスクリプトには実行権限が必要です(これが権限が拒否される理由です)、独自の(非対話型)シェルを起動します。
答え2
点は、現在シェルでスクリプトが実行されていることを示します。通常、シェルスクリプトはサブシェルで実行されますが、スクリプトを終了すると内部で設定されたすべての変数が失われます。この方法(ドットを含む)は、変数の値、変更されたディレクトリなどを保存する方法です。