Plik wykonywalny dowiązania symbolicznego powoduje, że „polecenie nie zostało znalezione”

24

Utworzyłem link symboliczny (wczoraj) w następujący sposób:

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

Kiedy biegnę:

prj-python file.py

Dostaję:

prj-python: command not found

Kiedy próbuję ponownie utworzyć link, otrzymuję:

ln: tworzenie dowiązania symbolicznego `/ usr / bin / prj-python ': Plik istnieje

Dlaczego tak się dzieje? Mój $PATHjest:

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

xralf
źródło

Odpowiedzi:

21

Wcześniej zapomniałeś początkowego ukośnika bin/python. Oznacza to, że /usr/bin/prj-pythonteraz wskazuje na /usr/bin/bin/python. Na co chciałbyś dokładnie wskazać?

janmoesen
źródło
Nie ma początkowego ukośnika. pwdjest /home/xralf/my_virtual_envi ma podkatalogu binz pythonpolecenia
xralf
8
Niż zapomniałeś $PWD/wcześniej bin.
rvs
Dziękuję, to pomogło. Użyłem tego polecenia, tak jak było w książce.
xralf
25

Rzeczy do sprawdzenia:

  • Wykonaj ls -l /usr/bin/prj-python

Jeśli tak, to:

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

plik zostanie przeszukany w / usr / bin / bin / python (to właśnie próbował powiedzieć xralf). Naprawić:

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

  • Jeśli masz bin/pythonskrypt powłoki (aka. Wrapper-script), sprawdź linię #! - (czasami nazywaną shebang -line ) w pierwszej linii. Jeśli występuje taka literówka #!/bin/bush, spowoduje to również komunikat o błędzie, który nie został znaleziony .
ktf
źródło
dziękuję, twoja odpowiedź jest jeszcze bardziej uważna i edukacyjna. Przepraszam, już zaakceptowałem.
xralf
pomogło to bardzo ... większość odpowiedzi, jeśli znaleziono, dotyczyła $ ŚCIEŻKI
Ja8zyjits
Używam ln bez parametru. Ludzie powinni rzeczywiście używać ln-s, tworząc w ten sposób symboliczne łącze.
Cedric
Pomógł i użyłem ln -s $PWD/python /usr/bin/python-prj. $PWDsłuży do uzyskania pełnej ścieżki.
Manwal