5
シンボリックリンクを見つけるために「realpath」を取得するにはどうすればよいですか?
私はbashシェルとしてMacOSXを使用しています。このように作成されたシンボリックリンクがあります。 ln -s /usr/bin/python python2 python2を使用するパッケージがあり、現在の作業ディレクトリに/usr/bin/python実際にpython2であるシンボルリンクを作成したい。python2コマンドラインからを実行すると、次のエラーが表示されます。 python2: realpath couldn't resolve "/usr/bin/python2" しかし、このように呼び出すと./python2、パスが正しく解決されます。私PATHは.それを持っています。実際、テスト用に変更するだけ.で済みます。 どうすれば解決できますか?ありがとう! 環境 下記の提案された解決策の多くは私にはうまくいきません。私は、人々がテキストの海にdrれないように、できるだけ集中して簡潔に私の質問を蒸留しようとしましたが、明らかに、より多くの背景を提供する必要があります。 gitからクローンを作成したパッケージで開発しようとしています。元のパッケージはgit-multimail、Linuxの一部のバリアントで開発されました(Ubuntuを推測しています)。MacOSXで可能な限り変更を加えずに使用できるように変更しようとしています。提案されたソリューションのいくつかが理想的ではない理由はここにあります: ルートとしてpython2、/ usr / bin /にシンボリックリンクを作成します。私はこれを必要としないソリューションを探しています。これは最初は明らかなオプションでしたが、ホストシステムを可能な限り変更しないソリューションが必要です。これが、現在の作業ディレクトリに一時シンボリックリンクを作成し、CWD(つまり.)をパスに追加し、終了時にこれを破棄する(つまり、シンボリックリンク)理由でした。 ラッパースクリプトを作成して、既存のPythonでPythonスクリプトを呼び出します。これに関する問題は、正しい実行環境を見つけるためにshebangに応じて、テストスイートの多くが実際のscript_filesを実行可能ファイルとして使用することです。これは、テストスイートをかなり編集することを意味します。このコンテキストでは(テストフレームワークのスニペットについては以下を参照)、すべての.pyファイルにラッパーを追加する必要があります。さらに、ユーザー/開発者は、使用しているシステムに応じてパッケージを使用するためのさまざまなルールを認識する必要があります(つまり、MacOSXでは、ラッパー経由で呼び出すか、明示的に呼び出すことなくpythonファイルを使用しないでください/usr/bin/python file.py)。 #! /bin/sh D=$(cd $(dirname "$0") && pwd) MULTIMAIL="$D/../git-multimail/git_multimail.py" POST_RECEIVE="$D/../git-multimail/post-receive" TESTREPO=$("$D/create-test-repo") HOME="$D" XDG_CONFIG_HOME="$D" GIT_CONFIG_NOSYSTEM=1 export HOME XDG_CONFIG_HOME GIT_CONFIG_NOSYSTEM cd $TESTREPO test_email() { REFNAME="$1" OLDREV="$2" NEWREV="$3" echo "$OLDREV" "$NEWREV" …