Score:4

เหตุใดเชลล์จึงไม่พบไฟล์ในไดเร็กทอรีปัจจุบันโดยใช้ชื่อเพียงอย่างเดียว

ธง cn

ฉันดาวน์โหลด VS Code's .deb ไฟล์สำหรับ Ubuntu ฉันเปลี่ยนชื่อเป็น เทียบกับเด็บ.

จากนั้นฉันไปที่ไดเร็กทอรีการดาวน์โหลดของฉัน:

ซีดี ~/ดาวน์โหลด

และตอนนี้ฉันอยู่ที่นี่ ฉันพยายามติดตั้ง:

sudo apt ติดตั้ง vs.deb

และนี่คือสิ่งที่ฉันได้รับ:

กำลังอ่านรายการแพ็กเกจ...เสร็จแล้ว   
สร้างต้นไม้พึ่งพา          
กำลังอ่านข้อมูลสถานะ...   
E: ไม่พบแพ็คเกจ vs.deb   
E: ไม่พบแพ็คเกจใด ๆ โดย glob 'vs.deb'

แต่เมื่อฉันติดตั้งโดยใช้ ./vs.debจากนั้นจะได้รับการติดตั้ง:

sudo apt ติดตั้ง ./vs.deb

เหตุใด Linux จึงไม่ยอมรับชื่อไฟล์ในไดเร็กทอรีเดียวกันโดยไม่ต้องใช้พาธสัมพัทธ์

David avatar
cn flag
ไดเร็กทอรีปัจจุบันกำหนดไว้ในคำสั่ง PATH หรือไม่ ฉันคิดว่าไม่จำเป็น ./ นี่เป็นที่รู้จักกันดีและไม่ใช่พฤติกรรมที่โง่เขลา
Kulfy avatar
mz flag
สิ่งนี้ตอบคำถามของคุณหรือไม่ [ฉันจะติดตั้งไฟล์ .deb ผ่านบรรทัดคำสั่งได้อย่างไร](https://askubuntu.com/questions/40779/how-do-i-install-a-deb-file-via-the-command-line) อ้างจาก [คำตอบของ Braiam](https://askubuntu.com/a/769542): *"แม้ว่าคุณจะอยู่ในไดเร็กทอรีที่มีแพ็คเกจ คุณต้องระบุเส้นทางโดยใช้ `./` ที่จุดเริ่มต้น"*
guiverc avatar
cn flag
คุณกำลังพยายามติดตั้งไฟล์ ดังนั้นต้องมีเส้นทาง คำสั่งของคุณที่ไม่มีพาธคือดาวน์โหลดและติดตั้งชื่อแพ็คเกจที่คุณระบุ (ปลอดภัยกว่าหากไม่ตั้งสมมติฐานว่าอาจเป็นไฟล์ แต่เป็นแพ็คเกจในแหล่งที่ได้รับอนุมัติ)
Peter Cordes avatar
fr flag
@David: หากคุณกำลังพูดถึงตัวแปรสภาพแวดล้อม `PATH` เช่น `/usr/local/bin:/bin:...` ไม่เลย มันไม่มีเหตุผลสำหรับ `apt` ที่จะค้นหา `$PATH` สำหรับไฟล์ `.deb` ที่กำหนดเป็น args แบบสอบถามตั้งสมมติฐานผิดเกี่ยวกับเชลล์ที่เกี่ยวข้อง ความคิดเห็นของคุณอาจทำให้ผู้เริ่มต้นเข้าใจผิดซึ่งไม่ทราบว่าไม่ได้นำไปใช้จริง ฉันขอแนะนำให้ลบมัน
Score:19
ธง cn

สิ่งที่คุณพบไม่เกี่ยวข้องกับเชลล์ แต่เกี่ยวข้องกับวิธีการที่ ฉลาด คำสั่งตีความอาร์กิวเมนต์ในบรรทัดคำสั่ง

มีวัตถุประสงค์หลักเพื่อติดตั้งแพ็คเกจจากที่เก็บซอฟต์แวร์ ตามค่าเริ่มต้น อาร์กิวเมนต์ถึง ฉลาด หมายถึงชื่อของแพ็คเกจในแหล่งซอฟต์แวร์ ข้อความ:

E: ไม่พบแพ็คเกจ vs.deb

ระบุชัดเจนว่าเป็นแพ็คเกจ เทียบกับเด็บ ไม่มีอยู่ในแหล่งซอฟต์แวร์

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

อันที่จริง มันไม่เคยเชลล์ที่ "ค้นหา" ไฟล์ เชลล์เพียงแค่ส่งอาร์กิวเมนต์ไปยังแอปพลิเคชัน และขึ้นอยู่กับแอปพลิเคชันที่จะตีความอาร์กิวเมนต์เหล่านี้ อย่างมากที่สุด เชลล์จะขยายตัว (เช่น การแทนที่ * ด้วยชื่อไฟล์ทั้งหมดหรือ ~ ด้วยเส้นทางแบบเต็มของโฮมโฟลเดอร์ของคุณ) หรือการแทนที่ตัวแปร (เช่น $บ้าน ถูกแทนที่ด้วยเนื้อหาของตัวแปรนั้น)

chrylis -cautiouslyoptimistic- avatar
อาจเป็นไปได้ว่าวงเล็บปีกกาขยาย _does_ มีคุณสมบัติเป็น "ค้นหา" ไฟล์
Peter Cordes avatar
fr flag
`apt-get` ซึ่งเป็นบรรพบุรุษของ `apt` ไม่สามารถใช้ `.deb` เป็นตัวเลือกบรรทัดคำสั่งได้ มีเพียงชื่อแพ็คเกจเท่านั้น คุณต้องใช้ `dpkg -i` เพื่อติดตั้งไฟล์ .deb ดังนั้นจึงมีแบบอย่างในอดีตสำหรับเครื่องมือแพ็คเกจระดับสูงกว่าของ Debian ในการ *ไม่* ตีความ args เป็นเส้นทาง อย่างน้อยก็ไม่ใช่โดยค่าเริ่มต้น
cn flag
@ chrylis-cautiouslyoptimistic- การขยาย Brace ไม่ได้ทำสิ่งใดที่เกี่ยวข้องกับไฟล์ แต่เป็นการแปลงข้อความล้วน ๆ ในทางกลับกัน การขยายด้วยสัญลักษณ์แทนจะค้นหาไฟล์ที่ตรงกัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา