makefileの現在のディレクトリが変更されないのはなぜですか?

makefileの現在のディレクトリが変更されないのはなぜですか?

簡単なスクリプトを実行しようとしています。 gitリポジトリをディレクトリに複製し、cdそのディレクトリに複製してインストールスクリプトを実行します。

スクリプトはMakefileにあります。

しかし、cdうまくいかないようです。私のインストールスクリプトが見つかりません。

後でスクリプトにパスワードを追加しましたが、ここにcd入力したディレクトリではなく、スクリプトを実行したディレクトリが表示されますcd

問題は何ですか?

git clone http://somerepo ~/some_dir
cd ~/some_dir/
pwd
python myscript.py install

=>

pwd:/hereIsPathToDirectoryFromWhichIRunTheScript

python: 'setup.py' ファイルを開けません: [Errno 2] そのファイルやディレクトリはありません

にも適用されません./setup.py

絶対パスを入力すると、~/some_dir/setup.py同じフォルダ内のリソースにアクセスしようとするため、後でスクリプトが失敗します。

ベストアンサー1

makefileを使用しています。 Makefile はスクリプトではなく、各行は新しいシェルで実行されます。これは、行内の環境を変更すると(たとえば、cd)変更が次の行に伝播されないことを意味します。

解決策は、コマンド間のコンテキストを維持したい場合は、同じ行ですべてのコマンドを実行することです。すべてのコマンドは同じシェルで実行され、環境は保存されます。

たとえば、

target:
    git clone http://somerepo ~/some_dir
    cd ~/some_dir/ && python myscript.py install

おすすめ記事