ฉันใช้bash
ฟังก์ชั่นต่อไปนี้เป็นการส่วนตัว:
so() {
local tmpdir="$(mktemp -d)"
local tmprc="$(mktemp)"
cat > "$tmprc" << EOF
PS1='\\$ '
cd "$tmpdir"
EOF
env - HOME="$HOME" TERM="$TERM" bash --rcfile "$tmprc"
rm -rf "$tmpdir" "$tmprc"
}
นี่คือสิ่งที่มันทำตามลำดับ:
- สร้างไดเรกทอรีชั่วคราว (เพื่อใช้เป็นไดเรกทอรีการทำงานของเราในสภาพแวดล้อมที่สะอาด);
- สร้างไฟล์ชั่วคราว (เพื่อใช้เป็น
bash
ไฟล์ rc ของเรา);
- ในไฟล์ rc เพิ่มบรรทัดที่:
- ตั้งค่า
PS1
พรอมต์ให้เป็น terminator ของพรอมต์ตามด้วยเว้นวรรคซึ่งทำให้มันมีความเกี่ยวข้องในกรณีที่เราต้องการสำเนาของผลลัพธ์ของเราบนเว็บไซต์ถาม - ตอบ
- เปลี่ยนเป็นไดเรกทอรีชั่วคราวที่เราสร้าง
- เรียกใช้อินสแตนซ์ใหม่ของ
bash
ซึ่ง:
- เริ่มแรกมีสภาพแวดล้อมที่ว่างยกเว้น
$HOME
และ$TERM
( env - ...
);
- อ่านไฟล์ rc ของมันจากไฟล์ชั่วคราวที่เราสร้างไว้ก่อนหน้า (
--rcfile
)
- เมื่อ bash ออกแล้วให้ลบไฟล์ชั่วคราวที่เราสร้างขึ้น
เห็นได้ชัดว่านี่ไม่ใช่สิ่งที่จะป้องกันความผิดพลาดได้ทั้งหมดนั่นคือคุณยังสามารถเข้าถึงส่วนอื่น ๆ ของระบบ อย่างไรก็ตามสิ่งนี้มีสภาพแวดล้อมชั่วคราวที่สะอาดซึ่งคุณสามารถใช้สำหรับการทดสอบ