TL; DR: ตรวจสอบให้แน่ใจว่า RVM เป็นรุ่นล่าสุดจนถึงอย่างน้อย 1.26.11 โดยการติดตั้งใหม่หรือออกคำสั่งrvm get head
และจะเริ่มต้นได้หนึ่งครั้งต่อสภาพแวดล้อมเทอร์มินัล
ผล
ในที่สุดฉันก็สามารถแก้ไขสภาพแวดล้อมของฉัน ฉันจะโพสต์ข้อมูลบางอย่างเกี่ยวกับปัญหาเฉพาะของฉันในความพยายามที่จะช่วยเหลือบางอย่างแม้ว่าคนอื่นอาจมีอาการเหมือนกัน แต่มีสาเหตุอื่น
สาเหตุ
ส่วนหนึ่งของปัญหารากมาจาก RVM และวิธีการเริ่มต้นสำหรับสภาพแวดล้อมบรรทัดคำสั่งของฉัน ฉันได้พบวิธีที่แตกต่างกันสองสามอย่างโดยเฉพาะอย่างยิ่งเนื่องจากวิธีพิเศษหนึ่งวิธีถูกสร้างขึ้นมาโดยเฉพาะสำหรับfish
สภาพแวดล้อมของเชลล์
ดูเหมือนว่าสาเหตุที่แท้จริงคือ:
- การเริ่มต้น RVM มากกว่าหนึ่งครั้งเนื่องจากฉันมีหลายข้อความสั่งหนึ่งรายการต่อไฟล์การกำหนดค่าเทอร์มินัลและเนื่องจากวิธีที่พวกเขาถูกล่ามโซ่ฉันจึงไม่ตระหนักถึงผู้อื่นที่ถูกเพิ่มโดยอัตโนมัติ
- หรืออย่างใดงบเพิ่มที่ผสมการเริ่มต้นสำหรับสภาพแวดล้อมที่ขั้วหนึ่งพูด
fish
และกำลังถูกเรียกใช้ในสภาพแวดล้อมที่สถานีอื่น ๆ ของฉันbash
หรือในทางกลับกัน นี้สามารถเห็นได้ในรายละเอียดด้านล่างของฉันที่เสียbash
PATH มีบางส่วนของเส้นทางที่คั่นด้วย:
s แต่แล้วคนอื่น ๆ ยังรวมถึงด้วยช่องว่างซึ่งเป็นไวยากรณ์ไม่ถูกต้องสำหรับแต่ที่ถูกต้องสำหรับbash
fish
- หรือทั้งคู่กำลังเกิดขึ้น!
จากนั้นอีกส่วนหนึ่งของปัญหารากก็คือดูเหมือนว่ามีข้อผิดพลาดที่เกี่ยวข้องกับ RVM / direnv พุ่งขึ้นเมื่อเร็ว ๆ นี้เกี่ยวกับฟังก์ชั่นกับดัก ฉันอาจพบปัญหานี้อีกครั้งโดยการเผยแพร่ RVM ที่เป็นปัญหาอย่างอื่นซึ่งอาจเกิดจาก:
- การติดตั้งใหม่:
curl -sSL https://get.rvm.io | bash
- การอัปเดตด้วยตนเอง:
rvm get head
- การปรับปรุงอัตโนมัติ (ที่ฉันได้ทำเพียงแค่) โดยการเพิ่ม
rvm_autoupdate_flag=2
การ~/.rvmrc
ปัญหานี้ควรได้รับการแก้ไข ณ วันที่ 30 มีนาคม 2559 หรือเผยแพร่ 1.26.11:
เรื่องราว
หลังจากต่อสู้กับยูทิลิตี้ GNU เพื่อทำการค้นหาที่สมบูรณ์ของระบบไฟล์โดยมองเข้าไปในเนื้อหาของไฟล์ฉันใช้ Atom เพื่อทำสิ่งนี้ให้ประสบความสำเร็จมากขึ้นและพบว่ามีการค้นพบสิ่งเดียวที่เกิดขึ้นshell_session_update
ใน/etc/bashrc_Apple_Terminal
ไฟล์ที่ Zanchey พูดถึง และเช่น). ฉันยังไม่แน่ใจว่าทำไมที่ถูกเรียกใช้เพราะผมใช้ iTerm (2) และความคุ้มค่าของ$TERM_PROGRAM
ในกรณีที่เป็นและไม่ได้iTerm.app
Apple_Terminal
มันก็ไม่ได้ช่วยฉันด้วยเหตุผลบางอย่างต้องจัดการการติดตั้ง RVM มากกว่าหนึ่งครั้งต้องผ่านกระบวนการติดตั้งซึ่งเพิ่มการกำหนดค่าให้กับ 'dotfiles' หลายตัวอยู่แล้วซึ่งฉันได้เพิ่มบางส่วนหรือด้วยตนเองลงไปด้วย .
พร้อมกับที่ฉันได้ทำ.bashrc
ไฟล์และเชื่อมโยงกับมันจาก.bash_profile
บน Mac ของฉันเพราะเห็นได้ชัดว่ามันไม่ได้อยู่โดยค่าเริ่มต้น ก่อนหน้านี้ฉันเคยอ่านบนระบบ Linux ว่าโดยการประชุม.bash_profile
นั้นดีสำหรับการปรับแต่งบางอย่างและ.bashrc
ดีต่อผู้อื่นเช่นการกำหนดนามแฝงของผู้ใช้และฟังก์ชั่นหรือในทางกลับกัน ดังนั้นฉันจึงไม่คุ้นเคยกับการดู.bash_profile
ไฟล์ภายในและโดยเฉพาะอย่างยิ่งไม่ใช่.profile
ไฟล์ทั้งหมดในไดเรกทอรีผู้ใช้ซึ่งระบบที่คล้ายกันก็อปปี้เช่นกัน อย่าลืมว่า a path_helper
อยู่ในส่วนผสม (!) แต่ดูเหมือนจะไม่ได้มีส่วนช่วยแก้ไขปัญหาใด ๆ
วิธีที่เป็นไปได้ในการตั้งค่าสภาพแวดล้อมที่อาจถูกต้องหรือไม่นั้นมีดังนี้:
รายละเอียดเพิ่มเติม
สำหรับคำฟุ่มเฟื่อยที่น่าทึ่งมากขึ้นนี่คือตัวอย่างเส้นทางที่ฉันจับระหว่างสภาพแวดล้อมที่แตกต่างกันในขณะที่การดีบักปัญหา:
เส้นทางปลา (แตก) ดั้งเดิม
/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin /Users/username/.rvm/rubies/ ruby-2.0.0-p648 / bin / ผู้ใช้ / username/.rvm/bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki / ผู้ใช้ / username/.rvm/ ถัง
เส้นทางธรรมชาติของปลาที่ดีกว่า
/ usr / local / opt / coreutils / libexec / gnubin / usr / local / opt / findutils / bin / usr / local / bin / usr / bin / bin / usr / sbin / usr / local / munki
เส้นทางทุบตีดั้งเดิม (แตก)
/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin / ผู้ใช้ /username/.rvm/rubies/ruby-2.0.0-p648/bin / ผู้ใช้ / username/.rvm/bin / usr / local / bin / usr / bin / usr / sbin / usbin / local / munki : /Users/username/.rvm/bin
'ด้วยตนเอง' แก้ไขเส้นทางทุบตี
/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin: /Users/username/.rvm/rubies/ruby-2.0.0-p648/bin:/Users/username/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin: /sbin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin
'ธรรมชาติ' ดีกว่าทุบตีเส้นทาง
/ usr / local / opt / coreutils / libexec / gnubin: / usr / local / opt / findutils / bin: / usr / local / opt / coreutils / libexec / gnubin: / usr / local / opt / findutils / bin: / usr / local / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / Munki
หมายเหตุ:
- 'ต้นฉบับมาจากการเริ่มต้นสภาพแวดล้อมใหม่ในล่ามบรรทัดคำสั่งทั้งสองในขณะที่มีปัญหา
- 'คู่มือ' แน่นอนเมื่อฉันใช้สตริงเส้นทางที่ไม่ถูกต้องแก้ไขข้อผิดพลาดทางไวยากรณ์และเห็นการทำงานที่เหมาะสมมากขึ้นของล่ามดังนั้นฉันจึงรู้ว่าจะต้องคาดหวังอะไรเมื่อดำเนินการแก้ไขสาเหตุที่แท้จริง
- 'ธรรมชาติมาจากเมื่อฉันข้ามการโหลดไฟล์การกำหนดค่าสภาพแวดล้อมของเทอร์มินัลเป็นครั้งแรก
.bashrc
และต่อจากนั้นในที่สุดก็ให้พวกเขาทำงานหลังจากปัญหาได้รับการแก้ไข
shell_session_update
เป็นฟังก์ชั่น Bash ที่ติดตั้งโดย OS X/etc/bashrc_Apple_Terminal
ดังนั้นอาจมีบางอย่างในคำสั่ง Bash ที่ RVM รันทำออกมาเป็นเอาต์พุต