ความแตกต่างระหว่างชื่อไฟล์และ. / ไฟล์ใน Linux คืออะไร


คำตอบ:


18

สำหรับ datafiles มันไม่ได้สร้างความแตกต่าง - ทั้งสองคำสั่งจะอ้างอิงไฟล์ข้อมูลในไดเรกทอรีปัจจุบันของคุณ (ตัวอย่างเช่นcat filenameและcat ./filenameเหมือนกันมีความหมาย)

มันเป็นเรื่องที่แตกต่างถ้าชื่อไฟล์ที่เป็นปัญหาหมายถึงไฟล์ที่เรียกใช้งานได้นั่นคือสิ่งแรก (หรือแม้แต่เท่านั้น) ที่คุณพิมพ์บนบรรทัดคำสั่ง ./filenameจะมองหาไฟล์ปฏิบัติการในไดเรกทอรีปัจจุบันของคุณและไม่มีที่อื่น filenameในทางกลับกันจะประเมินตัวแปรสภาพแวดล้อมPATHและมองหาfilenameในทุก ๆ ไดเรกทอรีที่เก็บอยู่ในนั้น (ซึ่งอาจจะมีหรือไม่มีไดเรกทอรีปัจจุบันของคุณ)

./filename(หรืออื่น ๆ/path/to/filename) เป็นที่ต้องการดังนั้นเมื่อคุณต้องการที่จะดำเนินการปฏิบัติการที่เฉพาะเจาะจงไม่ใช่คนแรกที่พบในเส้นทางของคุณ


6

หากคุณกำลังใช้งานโปรแกรมfilenameให้เรียกใช้งานโปรแกรมแรกที่พบในโปรแกรมของคุณ$PATHและโปรแกรมที่สองบอกให้เรียกใช้โปรแกรมหนึ่งในไดเรกทอรีปัจจุบัน

หากคุณกำลังใช้ชื่อไฟล์นั้นเป็นอาร์กิวเมนต์ของโปรแกรมเช่นเดียวกับในdo_something filenameหรือdo_something ./filenameจากนั้นพวกเขาหมายถึงสิ่งเดียวกัน


5

คุณกำลังอ้างถึงการดำเนินการคำสั่งใช่ไหม?

มีตัวแปรสภาพแวดล้อมPATHที่มีบางระบบไดเรกทอรีคั่นด้วยเครื่องหมายอัฒภาค เมื่อคุณพิมพ์commandระบบค้นหาในไดเร็กทอรีเหล่านี้ตามลำดับที่ระบุเพื่อค้นหาไฟล์เรียกทำงานที่ชื่อ <command> หากพบระบบจะพยายามเรียกใช้งาน คุณสามารถดูเส้นทางของคุณผ่านecho $PATHในทุบตี ตัวอย่างเช่น:

$ echo $ PATH
/ sbin: / bin: / usr / sbin: / usr / bin: / usr / เกม: / usr / local / sbin: / usr / local / bin: / home / ivanatora / bin: / usr / local / KDE4 / bin: / usr / local / KDE4 / bin

เมื่อคุณพิมพ์./filenameคุณจะระบุเส้นทางที่แน่นอน: ไดเรกทอรีปัจจุบัน คุณจะเห็นว่าไดเรกทอรีปัจจุบันไม่ค่อยอยู่ใน $ PATH ของคุณ (เพื่อเหตุผลด้านความปลอดภัย) ./filenameดังนั้นหากคุณต้องการที่จะรันไฟล์จากไดเรกทอรีปัจจุบันคุณใช้

เพื่อรันไฟล์ตามพา ธ ของมัน (โดยเฉพาะถ้ามันไม่ได้อยู่ใน $ PATH) คุณสามารถพิมพ์<path>/fileเช่น:

/ sbin / ifconfig


3

ความปลอดภัยที่ใช้งานได้เป็นเหตุผลหลักสำหรับความแตกต่างนี้

คุณไม่ต้องการ . (นำเสนอไดเรกทอรีการทำงานหรือ PWD) ในเส้นทางของคุณเพราะมีคนสามารถโทรจัน http://en.wikipedia.org/wiki/Trojan_horse_%28computing%29 การปฏิบัติการที่สำคัญเช่น PS หรือ ls ใน PWD ของคุณและหลอกคุณด้วยการนำเสนอข้อมูลที่ไม่ดี


1

ขึ้นอยู่กับสถานการณ์ที่คุณใช้เป็น

เป็นอาร์กิวเมนต์เช่น "ชื่อไฟล์โปรแกรม" จากนั้นขึ้นอยู่กับโปรแกรม แต่โดยทั่วไปแล้วพวกเขาจะเหมือนกัน

เป็นชื่อโปรแกรมเช่น "อาร์กิวเมนต์ชื่อไฟล์" จากนั้น "ชื่อไฟล์อาร์กิวเมนต์" จะค้นหา PATH เพื่อค้นหาไบนารีในขณะที่ "./filename อาร์กิวเมนต์" จะใช้โปรแกรมในไดเรกทอรีปัจจุบัน เห็นได้ชัดว่ามีประโยชน์ถ้า ไม่ได้อยู่ใน PATH แต่มันก็มีประโยชน์ที่จะใช้อันนี้แม้ว่า อยู่ในเส้นทางอาจเป็นเพราะมันตรงกับรายการก่อนหน้า

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