Score:2

เหตุใด "น้อย" จึงยอมรับชื่อไฟล์ว่าง และแสดงตัวแปรสภาพแวดล้อมบางอย่าง

ธง cn

ฉันวิ่งก น้อย คำสั่งที่ฉันคาดว่าจะล้มเหลวเพราะชื่อไฟล์จะว่างเปล่า แต่ที่ฉันประหลาดใจคือมันพิมพ์ตัวแปรสภาพแวดล้อมบางอย่าง:

$less -XE "$(ซึ่งไม่มีสคริปต์)"
ส่งออก LESSOPEN="| /usr/bin/lesspipe %s";
ส่งออก LESSCLOSE="/usr/bin/lesspipe %s %s";

(-XE โดยพื้นฐานแล้วทำให้มันมีพฤติกรรมเหมือน แมว.)

แมวในทางกลับกัน ล้มเหลว:

$ cat "$ (ซึ่งไม่มีสคริปต์)"
cat: '': ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว

ทำไม น้อย ทำเช่นนี้? ฉันได้แต่จินตนาการว่ามันเป็นปัญหา เพราะหากมีข้อบกพร่องบางอย่างในโค้ดของคุณที่ทำให้ชื่อไฟล์ว่างเปล่า คุณจะได้รับเอาต์พุตปลอม

ขณะที่เราอยู่ที่นี่ เหตุใดจึงพิมพ์ตัวแปรสภาพแวดล้อมเหล่านั้น พวกเขามาจากสภาพแวดล้อมของฉันหรือไม่ พวกเขาเหมือนกัน:

$ ประกาศ -p น้อยลงเปิด น้อยลงปิด 
ประกาศ -x LESSOPEN="| /usr/bin/lesspipe %s"
ประกาศ -x LESSCLOSE="/usr/bin/lesspipe %s %s"

ฉันตรวจสอบแล้ว ผู้ชายน้อยลง แต่ ชื่อไฟล์ พารามิเตอร์ดูเหมือนจะไม่ได้รับการบันทึกไว้อย่างชัดเจน การกล่าวถึงอื่น ๆ ดูเหมือนจะไม่เกี่ยวข้องกับพฤติกรรมนี้ ฉันยังตรวจสอบ น้อย คำถามที่พบบ่อย.

hr flag
ดูเหมือนว่าการเรียกใช้ 'lesspipe' ด้วยชื่อไฟล์ว่างเปล่าเป็นการใช้งานพิเศษ ตั้งใจให้ทำจากสคริปต์การตั้งค่าเชลล์เพื่อตั้งค่าสภาพแวดล้อมสำหรับการเรียกใช้ 'less' ที่ตามมา ดูตัวอย่าง [คุณช่วยอธิบายนิพจน์ eval ในค่าเริ่มต้น .bashrc](https://askubuntu.com/questions/724351/can-you-explain-eval-expression-in-the-default-bashrc) ฉันไม่รู้ว่าเอกสารนี้อยู่ที่ไหน
wjandrea avatar
cn flag
@steeldriver หึ คุณพูดถูก! ฉันเพิ่งลอง `less --no-lessopen ''` และล้มเหลวด้วย `: No such file or directory` ดังนั้นหากฉันเข้าใจถูกต้อง นี่เป็นมุมแหลมของการตั้งค่า Ubuntu หรือไม่ (และอาจเป็นการตั้งค่า Debian ต้นน้ำด้วย)
user10489 avatar
in flag
อย่างน้อยก็เป็นเรื่องแปลกของ Lesspipe และหน้าคน Lesspipe บอกว่ามันเขียนขึ้นสำหรับ Debian
wjandrea avatar
cn flag
@steeldriver ดูเหมือนว่าปัญหารากคือ `less` ไม่ได้อ้างอิงสตริงที่ส่งไปยัง `LESSOPEN` อย่างถูกต้อง แทนที่จะทำทั้งหมดคือ ["ใส่แบ็กสแลชก่อนอักขระเมตาแต่ละตัว"](https://github.com /gwsw/less/blob/1d0e8245cd32b149101039adfc0a379daf778de1/filename.c#L138-L143) ฉันไม่อยากให้มันพยายามอ้างเลย จากนั้นเราจะอ้างอิงชื่อไฟล์ในการกำหนดค่า: `LESSOPEN='| /usr/bin/lesspipe "%s"'`

โพสต์คำตอบ

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