quoteเป็นฟังก์ชั่นที่กำหนดไว้ (ที่นี่ในระบบ Debian ของฉัน แต่ฉันคิดว่ามันเหมือนกันบน Ubuntu) ในไฟล์/usr/share/bash-completion/bash_completionซึ่งตัวมันเองมีต้นกำเนิดมาจาก/etc/bash.bashrcตอนเริ่มต้นของ Bash
ฉันจะไม่ใช้ฟังก์ชั่นนี้! หากคุณต้องการเสนอราคาเพื่อให้เชลล์ใช้งานได้อย่างปลอดภัยโปรดใช้printfกับโมดิ%qฟายเออร์เป็น:
printf '%q\n' "Hello my friend I like 'single quotes' as well as \"double quotes\""
ในความเป็นจริงแม้จะใช้น้อยมาก แต่ก็มีกลยุทธ์ที่ดีกว่าสำหรับสิ่งระดับสูงเช่นเราผู้ใช้มักจะทำ quoteสิ่งนี้ถูกใช้ภายในโดยสิ่งที่คลุมเครือบางอย่างที่เราไม่ต้องการแม้แต่จะรู้ นี้quoteฟังก์ชั่นน่าจะเป็นผู้ผลิต / จัดจำหน่ายเฉพาะ (อ่าน Debian เฉพาะ) และอาจจะไม่ได้เป็นแบบพกพาที่ทั้งหมดและก็อาจจะมีการเปลี่ยนแปลงในอนาคต
แก้ไข ผมได้ตรวจสอบเพียงแค่บน Ubuntu 12.04 ระบบและquoteฟังก์ชั่นที่กำหนดไว้ใน/etc/bash_completionที่มาจากตัวเองมาโดย/etc/bash.bashrc/etc/profile
ฉันทราบได้อย่างไร ใช้ฮิวริสติกเล็กน้อย:
ตรวจสอบว่าquoteปรากฏใน/etc/profile:
grep '\bquote\b' /etc/profile
ไม่ไปยังขั้นตอนต่อไป
ไฟล์อะไรที่มาจาก/etc/profile?
grep '[[:space:]]\.[[:space:]]' /etc/profile
ฉันมี$i(ต้องมองเข้าไปในแหล่งที่มาสำหรับสิ่งที่มานี้ แต่ในกรณีนี้มันเป็นไฟล์/etc/profile.d/*.shถ้ามี (และถ้าอ่านได้) และ/etc/bash.bashrc. กำลังมองหา/etc/bash.bashrc.
- อยู่
quoteใน/etc/bash.bashrc? ใช่ / ไม่ ฯลฯ