3
ฉันจะบังคับให้ใช้คำสั่งในตัวอย่างชัดเจนและปลอดภัยได้อย่างไร
มีเป็นคำถามที่คล้ายกันที่เกี่ยวข้องกับ 'ตัด' สถานการณ์ที่คุณต้องการแทนที่เช่นcdมีคำสั่งที่เรียกใช้ cdbuiltin อย่างไรก็ตามในแง่ของ shellshock et al และเมื่อรู้ว่าทุบตีนำเข้าฟังก์ชั่นจากสภาพแวดล้อมฉันได้ทำการทดสอบสองสามครั้งและฉันไม่สามารถหาวิธีโทรหา builtin ได้อย่างปลอดภัยcdจากสคริปต์ของฉัน พิจารณาสิ่งนี้ cd() { echo "muahaha"; } export -f cd สคริปต์ใด ๆ ที่ถูกเรียกใช้ในสภาพแวดล้อมนี้cdจะใช้งานไม่ได้(พิจารณาถึงผลกระทบของสิ่งที่ชอบcd dir && rm -rf .) มีคำสั่งให้ตรวจสอบประเภทของคำสั่ง (เรียกว่าสะดวกtype) และคำสั่งสำหรับการดำเนินการรุ่น builtin แทนที่จะเป็นฟังก์ชั่น ( builtinและcommand) แต่แท้จริงและดูเถิดสิ่งเหล่านี้สามารถถูกแทนที่ด้วยการใช้ฟังก์ชั่นเช่นกัน builtin() { "$@"; } command() { "$@"; } type() { echo "$1 is a …