実行可能なシンボリックリンクは「コマンドが見つかりません」という結果になります


24

次のようなシンボリックリンク(昨日)を作成しました。

sudo ln -s bin/python /usr/bin/prj-python

実行すると:

prj-python file.py

私は得る:

prj-python: command not found

リンクを再度作成しようとすると、次のメッセージが表示されます。

ln:シンボリックリンクの作成 `/ usr / bin / prj-python ':ファイルが存在します

なぜそれが起こっているのですか?私$PATHは:

/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / games:/ opt / real / RealPlayer

回答:


21

前に最初のスラッシュを忘れましたbin/python。これは/usr/bin/prj-python、が指すことを意味し/usr/bin/bin/pythonます。正確に何を指し示したいですか?


最初のスラッシュはありません。pwd/home/xralf/my_virtual_env、それはサブディレクトリがあるbinpythonコマンド
xralf

8
よりも$PWD/前に忘れていましたbin
rvs

ありがとう、これは助けた。このコマンドは、本にあるとおりに使用しました。
xralf

25

確認事項:

  • 実行する ls -l /usr/bin/prj-python

次のような場合:

lrwxrwxrwx (...) /usr/bin/prj-python -> bin/python

ファイルは実際には/ usr / bin / bin / pythonで検索されます(xralfが言おうとしたことです)。修正:

rm /usr/bin/prj-python
ln -s /full/path/to/your/python /usr/bin/python-prj

  • あなたbin/pythonがシェルスクリプト(aka。wrapper -script)である場合、最初の行で#!-lineshebang -line と呼ばれることもあります)を確認してください。そのようなタイプミスが#!/bin/bushあると、見つからないエラーメッセージも表示されます。

ありがとう、あなたの答えはさらに慎重で教育的です。すみません、すでに受け入れました。
-xralf

これは多くのことを助けた...答えのほとんどを発見したが、$ PATHについてだったら
Ja8zyjits

パラメータなしでlnを使用します。人々は実際にln -sを使用する必要があります。したがって、シンボリックリンクが作成されます。
セドリック

助けて、私は使用しましたln -s $PWD/python /usr/bin/python-prj$PWDフルパスを取得するために使用されます。
マンワル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.