[解決済み] bashスクリプトでsourceを使用すると、「source: not found」エラーが発生します。
質問
私は、簡単なbashスクリプトを書こうとしています。
- virtualenv を実行して $1 に新しい環境を作成します。
- 仮想環境を有効にする
- さらにいくつかのことを行う (django をインストールし、django-admin.py を virtualenv のパスに追加する、など) 。
ステップ1はうまくいったのですが、virtualenvを有効にすることができないようです。virtualenvに慣れていない人のために説明すると、virtualenvは
activate
ファイルを作成し、仮想環境を有効にします。CLIから実行する場合は
source
source $env_name/bin/activate
ここで、$env_name は明らかに仮想環境のインストール先ディレクトリの名前です。
私のスクリプトでは、仮想環境を作成した後、activateスクリプトへのパスを次のように格納しています。
activate="`pwd`/$ENV_NAME/bin/activate"
しかし、私が
source "$activate"
は、私はこれを取得します。
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
知っている
$activate
にはアクティベートスクリプトへの正しいパスが含まれています。
source
. しかし
source
自体が見つからないようです。また、CLIですべてのステップを手動で実行してみましたが、すべてうまくいきました。
調べてみると
このスクリプト
これは私が欲しいものに似ていますが、私が必要としない他の多くのこと、例えば ~/.virtualenv ディレクトリ(または $WORKON_HOME にあるもの)にすべての仮想環境を保存しています。へのパスを作成しているようです。
activate
を呼び出す。
source "$activate"
を、基本的に私と同じように使っています。
以下は、そのスクリプトの全体像です。
#!/bin/sh
PYTHON_PATH=~/bin/python-2.6.1/bin/python
if [ $# = 1 ]
then
ENV_NAME="$1"
virtualenv -p $PYTHON_PATH --no-site-packages $ENV_NAME
activate="`pwd`/$ENV_NAME/bin/activate"
if [ ! -f "$activate" ]
then
echo "ERROR: activate not found at $activate"
return 1
fi
source "$activate"
else
echo 'Usage: djangoenv ENV_NAME'
fi
免責事項:私のbashスクリプトの腕前はかなり弱いです。CLIではかなり快適なのですが、これがうまくいかないのは何か非常に馬鹿げた理由があるのかもしれません。
解決するには?
bashスクリプトを書く場合は、名前を付けて呼び出す。
#!/bin/bash
/bin/shはbashであることを保証するものではありません。何年か前にUbuntuで壊れたスクリプトが大量に発生したのはこのせいです(IRC)。
ソースビルトインはbashで問題なく動作します。しかし、Normanが提案したように、dotを使用したほうがいいかもしれません。
関連
-
[解決済み] Bashで最新のディレクトリを変数に取得する
-
[解決済み] grepの出力に含まれる重複を削除する
-
[解決済み] AWS CLIのプロファイルを一時的に切り替えるには?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] bashシェルスクリプトの全引数を伝搬させる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bashでjsonファイルを解析するために、jqの出力にあるダブルクオートを削除する方法は?
-
[解決済み】SEDをワイルドカードで使用する場合
-
[解決済み] bash : cd : 引数が多すぎる [閉店].
-
[解決済み] Docker ubuntu イメージ - bash: man: コマンドが見つかりません。
-
[解決済み] Bashでの動的な変数名
-
[解決済み] bash file returns unexpected token `$'dottpr''
-
[解決済み] ターミナルでbashスクリプトを実行するにはどうすればよいですか?
-
[解決済み] シェルスクリプトでの連想配列
-
[解決済み] 環境変数を表示/エコーするには?
-
[解決済み] Bashスクリプトのset -o pipefailの意味を教えてください。