'./' ทำอะไรในคำสั่งเช่น './manage.py' หรือ './bin/buildout' [ซ้ำ]


0

ซ้ำกันได้:
“ /”,“ ./”,“ ../” แสดงถึงอะไรเมื่อให้เส้นทาง

ตัวอย่าง: สำหรับการใช้งานเซิร์ฟเวอร์ django ฉันใช้: python manage.py runserver

แต่บางคนดูเหมือนจะใช้ ./manage.py runserver. คำสั่งนี้ดูเหมือนจะทำเช่นเดียวกับคำสั่งก่อนหน้า

อะไรกันแน่ ./ ส่วนไหนทำ

คำตอบ:


4

. เป็นเส้นทางของไดเรกทอรีปัจจุบัน
ทุกไดเรกทอรีมีไฟล์พิเศษสองไฟล์เสมอ .และ ..ที่แรกแสดงถึงตัวเองในขณะที่สองแสดงถึงไดเรกทอรีหลัก

โดยการเขียน ./manage.py runserverคุณกำลังเรียกใช้คำสั่ง manage.py ด้วยการโต้แย้ง runserver. เพื่อดูว่าเกิดอะไรขึ้นเมื่อคุณดำเนินการ manage.pyตรวจสอบเนื้อหาของไฟล์ด้วย less manage.py.

ในการสรุปรวมไม่ควรมีความแตกต่างใด ๆ ในทั้งสองกรณียกเว้นรุ่นของ python ที่ระบุใน Manage.py จะแตกต่างจากรุ่น python เริ่มต้น หลามใช้ใน manage.py สามารถเห็นได้ที่บรรทัดแรก


ตกลงดังนั้นบรรทัดแรกของ manage.py คือ #!/usr/bin/env python. ./file จะเรียกใช้งานไฟล์ไบนารีที่ระบุโดยพา ธ นั้น ดังนั้นจึงเป็นการดีกว่าที่จะเขียน ./ แล้วก็ python เพราะมันสั้นกว่า แก้ไข?
Bentley4

Bentley คุณยังไม่เข้าใจ ไม่ใช่สิ่งที่คุณควรคำนึงถึงโดยเฉพาะกับ Python ตรวจสอบคำตอบของฉัน
deed02392

นอกหลักสูตรฉันหมายถึงในกรณีนี้ แต่ฉันเดาว่าฉันจะเขียนได้ชัดเจนยิ่งขึ้นขอโทษ คุณช่วยอธิบายได้ไหมว่าทำไมต้องทำงาน python manage.py ไม่ต้องการ manage.py ที่จะได้รับอนุญาตจากผู้บริหาร ./manage.py ทำ?
Bentley4

1
แน่นอนว่าเหตุผลที่การเรียกใช้ 'python Manage.py' ไม่จำเป็นต้องได้รับอนุญาตจากผู้ดูแลระบบบน Manage.py คือ: ในกรณีนี้ manage.py เป็นเพียงข้อโต้แย้งในการสั่ง python
bbaja42

3

./ บอกเชลล์ว่าคุณกำลังอ้างถึงไฟล์ใน ไดเรกทอรีปัจจุบัน หากคุณต้องการเรียกโปรแกรมเช่น backup และนี่ก็เป็นไบนารีที่มีอยู่ในหนึ่งในนั้น program directories บนระบบเชลล์จะรันไบนารีนี้เป็นค่าเริ่มต้น

อย่างไรก็ตามคุณอาจอยู่ในไดเรกทอรีของโปรแกรมของคุณซึ่งมีเลขฐานสองเรียก backupอีกด้วย ด้วยเหตุนี้คุณอาจไม่รู้ด้วยซ้ำว่าระบบกำลังใช้งานไบนารีที่ต่างกัน

โดยใช้ ./backupคุณกำลังระบุว่าคุณต้องการให้ระบบใช้ไบนารีในไดเรกทอรีการทำงานปัจจุบันซึ่งตรงข้ามกับที่มีอยู่ในโปรแกรม dirs

คุณสามารถทดสอบสิ่งนี้ได้โดยใช้ Linux whereis คำสั่งซึ่งในตัวอย่างนี้อาจระบุว่า backup เป็นจริงที่ /usr/bin/backupแทนที่จะเป็น ~/backup.


1

เหตุผลหลักในการใช้ ./ คำนำหน้าคือไดเรกทอรีปัจจุบันไม่ได้อยู่ในตัวแปร $ PATH อย่างน้อยมันก็ไม่ควรจะเหมือนหน้าต่างที่คุณมี ;. ในตอนท้ายของเส้นทาง


0

./ เป็นวิธีสั้น ๆ ในการดำเนินการจากไดเรกทอรีปัจจุบัน

../ เป็นวิธีย่อ ๆ ของการ "เพิ่ม" โฟลเดอร์ก่อนป้อนชื่อโฟลเดอร์ที่กำหนด


2
คุณหมายถึงอะไรกับ 'รูทไลน์'? ดำเนินงานจาก / ไดเรกทอรี (root) สิ่งนี้ไม่สมเหตุสมผลสำหรับฉันเพราะไม่มี manage.py ไฟล์ในของฉัน / ไดเรกทอรี
Bentley4

@ Bentley4 ./ หมายถึงไดเรกทอรีปัจจุบัน ดูคำตอบอื่น ๆ ของคำถามนี้และคำถามที่ถูกเชื่อมโยงเพื่อดูรายละเอียด
Indrek

ขออภัย root เป็นตัวเลือกคำที่ไม่ดี ขอบคุณ @indrek "รากโครงการ" มากเกินไป :(
Avik
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.