tło
Wchodzę w Ruby 2.xi Rails 4.x na MacBooku, używając OS X El Capitan (10.11.3), używając powłoki rybnej, używając integracji wymienionej na tej stronie: RVM - Fish Shell (Integracja)
Problem
Podczas wykonywania różnych poleceń, takich jak rvm version
, rvm install ...
, rvm use ...
, rvm --default ...
, itd, otrzymuję następujący komunikat o błędzie:
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found
Szybkie wyszukiwanie w Google nie zwraca żadnych powiązanych wyników, które pomogłyby mi zidentyfikować i / lub naprawić problem, co zadziałało w przypadku wielu innych problemów związanych z konfiguracją oprogramowania.
Przeprowadziłem szybkie wyszukiwanie tekstu w rvm.fish
pliku funkcji, w .config/fish
katalogu, a także w $HOME/.rvm/bin/rvm
głównym pliku wykonywalnym, i nie widziałem polecenia takiego jak shell_session_update
wywołanie bezpośrednio w tym pliku.
Pytanie
Czy ktoś wie, dlaczego tak się dzieje i jak mogę to naprawić? Jestem osobą, która lubi naprawiać przede mną rzeczy, aby tylko te rzeczy, które muszę podjąć, pojawiają się przede mną, dlatego chcę usunąć ten komunikat o błędzie / ostrzeżeniu. :)
PS Wydaje się, że konkretna wersja Ruby (2.0.0), którą próbowałem zainstalować i używać, działa poprawnie, nawet w tej samej sesji terminala (iTerm (2)), bez konieczności jej restartowania. Od tego czasu ją zamknąłem i utworzyłem nową sesję terminala i nadal widzę komunikat pojawiający się podczas uruchamiania różnych wyżej wymienionych poleceń.
shell_session_update
jest funkcją Bash zainstalowaną przez OS X/etc/bashrc_Apple_Terminal
, więc prawdopodobnie coś w komendach Bash, które uruchamia RVM, wytwarza ją jako wynik.Odpowiedzi:
TL; DR: Upewnij się, że RVM jest aktualny do wersji co najmniej 1.26.11, ponownie instalując lub wydając polecenie
rvm get head
, i jest inicjowany tylko raz na środowisko terminala.Wynik
W końcu udało mi się naprawić moje środowisko. Zamierzam opublikować pewne informacje dotyczące mojego konkretnego problemu, starając się pomóc niektórym, nawet jeśli inni mogą mieć ten sam objaw, ale inną podstawową przyczynę.
Przyczyna
Jedna część problemu root pochodziła z RVM i jak została zainicjowana dla moich środowisk wiersza poleceń. Znalazłem kilka różnych sposobów, aby to zrobić, zwłaszcza, że stworzono jedną dodatkową metodę dla
fish
środowiska powłoki.Wydaje się, że główną przyczyną była albo:
fish
, i były uruchamiane w moim innym środowisku terminalowymbash
, lub odwrotnie. Można to zobaczyć w moich szczegółach poniżej, gdzie zepsutabash
ŚCIEŻKA ma niektóre ścieżki ograniczone przez:
s, ale inne zawierają również spacje, co jest niepoprawną składniąbash
, ale poprawną dlafish
.Następnie drugą częścią problemu root było to, że wydaje się, że błąd związany z RVM / direnv pojawił się ostatnio w związku z funkcją pułapki. Prawdopodobnie spotkałem się z tym ponownie, mając jedną z innych problematycznych wersji RVM, które mogły być spowodowane przez:
curl -sSL https://get.rvm.io | bash
rvm get head
rvm_autoupdate_flag=2
do~/.rvmrc
Ten problem powinien zostać rozwiązany od 30 marca 2016 r. Lub w wersji 1.26.11:
Historia
Po walce z narzędziami GNU, aby przeprowadzić pełne wyszukiwanie systemu plików, zaglądając do zawartości pliku, użyłem Atomu, aby osiągnąć większy sukces, i odkryłem, że jedyne wystąpienie
shell_session_update
znaleziono w/etc/bashrc_Apple_Terminal
pliku wspomnianym przez Zancheya (oprócz plików historii oraz taki). Nie jestem również pewien, dlaczego to było uruchamiane, ponieważ korzystałem z iTerm (2), a wartość$TERM_PROGRAM
w tym przypadku jestiTerm.app
i nieApple_Terminal
.Nie pomogło mi również to, że z jakiegoś powodu musiałem zarządzać instalacją RVM więcej niż raz, przechodząc przez proces instalacji, który najwyraźniej dodaje już konfigurację do kilku „plików dot”, w których również ręcznie dodałem niektóre lub wiersze .
Oprócz tego utworzyłem
.bashrc
plik i podlinkowałem go z.bash_profile
mojego komputera Mac, ponieważ najwyraźniej domyślnie nie istniał. Wcześniej czytałem na temat systemu Linux, który zgodnie z konwencją.bash_profile
jest dobry dla niektórych dostosowań i.bashrc
jest dobry dla innych, takich jak definiowanie aliasów i funkcji użytkownika lub odwrotnie. Nie byłem więc przyzwyczajony do zaglądania do.bash_profile
pliku, a zwłaszcza do.profile
pliku, wszystko w katalogu użytkownika, który również kopiuje podobny system. Nie zapominajmy też, że apath_helper
jest w miksie (!), Ale wydaje się, że nie przyczynia się do żadnych problemów.Możliwe sposoby skonfigurowania środowiska, które mogą być poprawne lub nie, są następujące:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(jako ostatni wiersz, który modyfikujePATH
zmienną tuż przed przekazaniem kontroli użytkownikowi.rvm default
(PATH
Musi także być ostatnią linią modyfikującą. Od: StackOverflow - Otrzymywanie „Ostrzeżenie! ŚCIEŻKA nie jest poprawnie skonfigurowana” podczas rvm użyj 2.0.0 - domyślny )Więcej szczegółów
Aby uzyskać bardziej niewiarygodną szczegółowość, oto kilka przykładowych ścieżek przechwyconych przez różne środowiska podczas debugowania problemu:
Oryginalna (łamana) ŚCIEŻKA ryb
„Naturalnie” lepsza ŚCIEŻKA dla ryb
Oryginalna (zepsuta) ŚCIEŻKA bashu
„Ręcznie” Naprawiono ścieżkę bash
„Naturalnie” lepsza ŚCIEŻKA uderzenia
Uwagi:
.bashrc
i tak dalej, a potem ostatecznie je uruchomiłem po rozwiązaniu problemu.źródło
rvm get head
a potemrvm reinstall {version}
dla każdej wersji kończyło się dla mniecurl -sSL https://get.rvm.io | bash -s head --ruby
<rvm sourcing line>
do końca w moim.bash_profile
. Naprawiony.Ja też miałem ten sam problem. Później odkryłem, że w repozytorium rvm występuje już problem. I naprawili to w jednym z żądań ściągnięcia.
Aby to naprawić, zaktualizuj RVM do najnowszej wersji lub wskaż bieżącą wersję rozwojową.
Więcej informacji można znaleźć w tym poście .
źródło