นักพัฒนาเรียกร้องให้เครื่องมือคำสั่งสมัยใหม่มีประวัติการใช้งานแยกตามไดเรกทอรี

BigGo Editorial Team
นักพัฒนาเรียกร้องให้เครื่องมือคำสั่งสมัยใหม่มีประวัติการใช้งานแยกตามไดเรกทอรี

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

เหตุผลที่ต้องการประวัติคำสั่งแยกตามไดเรกทอรี

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

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

วิธีแก้ปัญหาและทางเลือกในปัจจุบัน

ชุมชนได้ระบุถึงวิธีแก้ปัญหาที่มีอยู่หลายวิธี เครื่องมืออย่าง Atuin มีฟังก์ชันค้นหาประวัติตามไดเรกทอรีผ่านคำสั่งอย่าง atuin search --cwd . ในขณะที่ผู้ใช้ Zsh สามารถเพิ่มความสามารถนี้ผ่านปลั๊กอินอย่าง per-directory-history ส่วน NuShell ใช้วิธีการแตกต่างโดยมีระบบเติมคำอัตโนมัติตามบริบทของไดเรกทอรีเป็นค่าเริ่มต้น

โซลูชันปัจจุบันสำหรับประวัติการใช้งานเฉพาะไดเรกทอรี:

  • Atuin: รองรับการค้นหาประวัติเฉพาะไดเรกทอรีผ่านคำสั่ง atuin search --cwd .
  • Zsh: มีให้ใช้งานผ่านปลั๊กอิน per-directory-history
  • NuShell: มีระบบเติมคำอัตโนมัติตามไดเรกทอรีในตัว
  • Direnv: เป็นทางเลือกที่เป็นไปได้ผ่านการจัดการตัวแปรสภาพแวดล้อม

การจัดการประวัติคำสั่งในหลายอินสแตนซ์

อีกประเด็นสำคัญที่นักพัฒนาหยิบยกขึ้นมาคือความท้าทายในการจัดการประวัติคำสั่งเมื่อเปิดใช้งานเชลล์หลายอินสแตนซ์พร้อมกัน วิธีการแบบดั้งเดิมที่เก็บประวัติเฉพาะอินสแตนซ์แรกที่เปิดนั้นไม่เพียงพอสำหรับรูปแบบการพัฒนาสมัยใหม่ เครื่องมืออย่าง Atuin และการตั้งค่าเฉพาะของ Zsh ช่วยให้บันทึกประวัติทันทีในทุกอินสแตนซ์ ป้องกันการสูญหายของประวัติคำสั่งเมื่อระบบดับกะทันหัน

อนาคตของการพัฒนาเชลล์

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

การตอบรับจากชุมชนชี้ให้เห็นว่าแม้เครื่องมืออย่าง Yash จะโดดเด่นในด้านการรองรับมาตรฐาน POSIX และฟีเจอร์เชลล์แบบดั้งเดิม แต่ยังมีพื้นที่สำหรับนวัตกรรมในการจัดการข้อมูลตามบริบทและการทำงานในหลายอินสแตนซ์ การถกเถียงนี้อาจมีอิทธิพลต่อทิศทางการพัฒนาเชลล์และการออกแบบเครื่องมือคำสั่งในอนาคต

อ้างอิง: Yash: yet another shell