Latar Belakang
Saya masuk ke Ruby 2.x, dan Rails 4.x, di MacBook menggunakan OS X El Capitan (10.11.3), menggunakan shell ikan, menggunakan integrasi yang tercantum di halaman ini: RVM - Shell Ikan (Integrasi)
Masalah
Ketika menjalankan berbagai perintah seperti rvm version
, rvm install ...
, rvm use ...
, rvm --default ...
, dll, saya menerima pesan galat berikut:
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found
Pencarian cepat Google tidak menghasilkan hasil terkait yang akan membantu saya mengidentifikasi dan / atau memperbaiki masalah, seperti yang telah bekerja untuk banyak masalah pengaturan pengembangan saya yang lain.
Saya melakukan pencarian teks cepat di rvm.fish
file fungsi, di bawah .config/fish
direktori, dan juga di dalam $HOME/.rvm/bin/rvm
executable utama, dan tidak melihat perintah seperti shell_session_update
dipanggil langsung di file itu.
Pertanyaan
Adakah yang tahu mengapa ini terjadi, dan bagaimana saya bisa memperbaikinya? Saya adalah orang yang suka memperbaiki hal-hal yang ada di depan saya, sehingga hanya hal-hal yang perlu saya lakukan yang muncul di depan saya, jadi saya ingin menghapus pesan kesalahan / peringatan ini. :)
PS Versi Ruby tertentu (2.0.0) yang saya coba instal dan gunakan, tampaknya berfungsi dengan baik, bahkan dalam sesi terminal yang sama (iTerm (2)), tanpa harus memulai ulang. Sejak itu saya menutupnya dan telah membuat sesi terminal baru, dan masih melihat pesan muncul ketika menjalankan berbagai perintah yang disebutkan di atas.
shell_session_update
adalah fungsi Bash yang diinstal oleh OS X di/etc/bashrc_Apple_Terminal
, jadi mungkin sesuatu dalam perintah Bash yang dijalankan RVM memproduksinya sebagai output.Jawaban:
TL; DR: Pastikan RVM terbaru untuk setidaknya 1,26.11 dengan menginstal ulang atau mengeluarkan perintah
rvm get head
, dan hanya diinisialisasi sekali per lingkungan terminal.Hasil
Akhirnya saya bisa memperbaiki lingkungan saya. Saya akan memposting beberapa informasi yang berkaitan dengan masalah spesifik saya dalam upaya untuk membantu beberapa, meskipun yang lain mungkin memiliki gejala yang sama tetapi penyebab utama lainnya.
Sebab
Salah satu bagian dari masalah root berasal dari RVM, dan bagaimana ini diinisialisasi untuk lingkungan baris perintah saya. Saya telah menemukan beberapa cara berbeda untuk melakukan ini, terutama karena satu metode tambahan khusus dibuat untuk
fish
lingkungan shell.Tampaknya penyebab utamanya adalah:
fish
, dan sedang dijalankan di lingkungan terminal saya yang lainbash
,, atau sebaliknya. Ini dapat dilihat pada perincian saya di bawah ini di manabash
PATH yang rusak memiliki beberapa lintasan yang dibatasi oleh:
s, tetapi kemudian yang lain juga termasuk oleh spasi, yang merupakan sintaks yang salah untukbash
, tetapi yang benar untukfish
.Kemudian bagian lain dari masalah root adalah tampaknya ada bug terkait RVM / direnv baru-baru ini merangkak mengenai fungsi trap. Saya mungkin mengalami ini lagi dengan memiliki salah satu rilis RVM bermasalah lainnya yang dapat disebabkan oleh:
curl -sSL https://get.rvm.io | bash
rvm get head
rvm_autoupdate_flag=2
ke~/.rvmrc
Masalah ini harus diperbaiki pada 30 Maret 2016, atau rilis 1.26.11:
Cerita
Setelah berkelahi dengan utilitas GNU untuk melakukan pencarian lengkap dari sistem file, mengintip isi file, saya menggunakan Atom untuk melakukan ini lebih sukses, dan menemukan bahwa satu-satunya kejadian
shell_session_update
ditemukan dalam/etc/bashrc_Apple_Terminal
file yang disebutkan oleh Zanchey (selain file sejarah dan seperti). Saya juga tidak yakin mengapa itu dijalankan karena saya menggunakan iTerm (2), dan nilai$TERM_PROGRAM
dalam hal ini adalahiTerm.app
dan tidakApple_Terminal
.Itu juga tidak membantu bahwa saya, untuk beberapa alasan, harus mengelola instalasi RVM lebih dari sekali, melalui proses instalasi, yang tampaknya menambahkan konfigurasi ke beberapa 'dotfiles', di mana saya juga secara manual menambahkan beberapa atau baris .
Bersamaan dengan itu saya telah membuat
.bashrc
file dan menautkannya dari.bash_profile
pada Mac saya, karena ternyata tidak ada secara default. Saya sebelumnya pernah membaca tentang sistem Linux yang, menurut konvensi,.bash_profile
bagus untuk beberapa penyesuaian, dan.bashrc
bagus untuk yang lain seperti mendefinisikan alias pengguna dan fungsi, atau sebaliknya. Jadi saya tidak terbiasa melihat ke dalam.bash_profile
file, dan terutama bukan.profile
file, semua ada di direktori pengguna, yang juga disalin oleh sistem serupa. Mari kita juga jangan lupa apath_helper
is in the mix (!), Tetapi sepertinya tidak berkontribusi pada masalah.Cara-cara yang mungkin untuk mengatur lingkungan, yang mungkin benar atau tidak, adalah sebagai berikut:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(sebagai baris terakhir yang memodifikasiPATH
variabel sebelum kontrol diserahkan kepada pengguna.rvm default
(Juga harus menjadiPATH
baris -modifikasi terakhir . Dari: StackOverflow - Mendapatkan "Peringatan! PATH tidak diatur dengan benar" ketika melakukan rvm gunakan 2.0.0 --default )Keterangan lebih lanjut
Untuk verbositas yang lebih luar biasa, berikut adalah beberapa contoh jalur yang saya ambil di antara berbagai lingkungan saat men-debug masalah:
PATH ikan asli (rusak)
PATH ikan 'Alami' yang lebih baik
PATH bash asli (rusak)
Memperbaiki bash PATH 'Manual'
'Secara alami' lebih baik bash PATH
Catatan:
.bashrc
dan seterusnya, dan akhirnya mereka menjalankannya setelah masalah terpecahkan.sumber
rvm get head
dan kemudianrvm reinstall {version}
untuk setiap versi akhirnya diperbaiki untuk sayacurl -sSL https://get.rvm.io | bash -s head --ruby
<rvm sourcing line>
ke ujung di saya.bash_profile
. Tetap.Saya juga punya masalah yang sama. Kemudian saya menemukan bahwa sudah ada masalah dalam rvm repo untuk ini. Dan mereka telah memperbaikinya di salah satu permintaan tarik.
Untuk memperbaikinya, perbarui rvm ke versi terbaru atau arahkan ke revisi pengembangan saat ini.
Untuk lebih jelasnya lihat posting ini .
sumber