別のディレクトリからファイルを実行する[閉じる]

別のディレクトリからファイルを実行する[閉じる]

mainfolderexecutionスクリプトを含むサブディレクトリがあるディレクトリがありますconfigure。そのexecutionディレクトリに切り替えて実行すると./configure正常に動作します。今configure、私はそこにいるときにこれを行う方法を理解しようとしていますmainfolder

./configure /execution

そして:

./configure execution

しかし、それらのどれも動作しません。また、ルートのフルパスを使用するか、次のようにユーザーディレクトリから始めて同じことを試しました。

./configure /home/etc/user/mainfolder/execution
./configure user/mainfolder/execution

私はいつも次のメッセージを受け取ります。

bash: ./configure: そのファイルやディレクトリはありません。

最後に、以下を試しました。

/home/etc/user/mainfolder/execution/configure 
. /home/etc/user/mainfolder/execution/configure

どちらも私にエラーを与えます。

sed: makefile.in を読み込めませんでした: そのファイルまたはディレクトリがありません

どうすればいいですか?

答え1

まず、構成スクリプトがあると思われる場所に存在することを確認します。 2番目に実行可能であることを確認してください。

$ ls -l ./configure 
-rwxrwxr-x 1 saml saml 100 Jun  9 05:11 ./configure

両方のチェックが正常な場合は、まずconfigureディレクトリを次に変更して/mainfolder/executionから、次を実行して実行してみることができますconfigure

$ cd /mainfolder/execution
$ ../configure

次のアプローチを試すこともできます。

$ cd /mainfolder
$ ./configure execution

編集#1

OPが残した説明によると、次のディレクトリ構造は彼が説明するように見えます。

$ tree -f
.
`-- /mainfolder
    `-- /mainfolder/execution
        `-- /mainfolder/execution/configure

答え2

* nixでは、/これは常にファイルシステム全体のルートディレクトリであり、.常に現在の作業ディレクトリを表します。

で始まるすべてのパス/は絶対パスです。で始まるすべてのパス.は相対パスです。

そのため、/home/...ディレクトリがルートディレクトリにある場合は正しいかもしれませんし、ルート/excecutionディレクトリにあるので間違っているかもしれません。いいえルートディレクトリにありますが/home/...

つまり、現在の作業ディレクトリ()でファイルを実行しようとします./configureconfigure.

このエラーは、単にNo such file or directory指定されたファイルが現在の作業ディレクトリに存在しないことを示します。configure

これを使用して、pwd現在の作業ディレクトリが何であるかを表示できます。そこにどのファイルがあるかを表示するために使用されますlscd現在の作業ディレクトリを変更するために使用されます。

実質的な問題を解決するのに役立ちます。何をしたいのか教えてください。なぜ走りたいですかconfigure?何をすべきですか?実行ディレクトリを指定する必要があるのはなぜですか?

答え3

問題は、ファイルを実行する必要がありますが、現在のディレクトリを変更しないでください。だから私はこれを試してみました:

cd execution/ && ./configure

関連情報