ผลการเชื่อมโยงสัญลักษณ์ที่ปฏิบัติการได้ใน“ ไม่พบคำสั่ง”


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 / เกม: / opt / จริง / RealPlayer

คำตอบ:


21

bin/pythonคุณลืมเฉือนเริ่มต้นก่อน ซึ่งหมายความว่าในขณะนี้ชี้ไปที่/usr/bin/prj-python /usr/bin/bin/pythonคุณต้องการให้มันชี้ไปที่อะไร?


ไม่มีเครื่องหมายทับเริ่มต้น pwdเป็น/home/xralf/my_virtual_envและมีไดเรกทอรีย่อยbinที่มีpythonคำสั่ง
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) ให้ตรวจสอบ#! - บรรทัด (บางครั้งเรียกว่าshebang -line) ที่บรรทัดแรก หากมีการพิมพ์ผิด#!/bin/bushที่จะทำให้เกิดข้อผิดพลาดไม่พบเช่นกัน

ขอบคุณคำตอบของคุณนั้นรอบคอบและให้ความรู้มากกว่านี้ ขอโทษฉันได้รับการยอมรับแล้ว
xralf

สิ่งนี้ช่วยได้มาก ... คำตอบส่วนใหญ่หากพบมีค่าประมาณ $ PATH
Ja8zyjits

ฉันใช้ ln โดยไม่มีพารามิเตอร์ ผู้ใช้ควรใช้ ln -s แน่นอนดังนั้นจึงเป็นการสร้างลิงก์สัญลักษณ์
เซดริก

ln -s $PWD/python /usr/bin/python-prjช่วยและฉันใช้ $PWDใช้สำหรับการรับเส้นทางแบบเต็ม
Manwal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.