Kilka dni temu po prostu przełączyłem się na lwa i zauważyłem, że po wyjściu z Terminalu w folderze, kiedy go otworzysz, powinien wrócić do tego folderu (razem z innymi kartami).
Jest to naprawdę dobra funkcja, ale problem polega na tym, że nie „odświeża” ona twoich ścieżek. Oznacza to, że nawet jeśli masz plik .rvmrc w folderze aplikacji, nie ustawi on ponownie ruby i gemsetu. będziesz musiał zrezygnować z CD i powrócić ponownie, co pokonuje cel posiadania rvmrc.
Czy to znany błąd i czy są już jakieś poprawki / poprawki?
EDYTOWAĆ Dodałem, zgodnie z radą Chrisa Page cd "$PWD"
w ostatnim wierszu mojego .bashrc (który jest ładowany przez mój plik .bash_profile)
To z kolei „ładuje” rvmrc zgodnie z oczekiwaniami:
Last login: Tue Aug 9 11:29:09 on ttys003
Using /Users/eumir/.rvm/gems/ruby-1.9.2-p180 with gemset mygemset
eumir$ gem list
/Users/eumir/.rvm/rubies/ruby-1.9.2-p180/bin/gem:12:in `require': no such file to load -- rubygems (LoadError)
from /Users/eumir/.rvm/rubies/ruby-1.9.2-p180/bin/gem:12
eumir$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0]
Jak widać, załadował on gemset (wydrukowany przez „Using / Users ...”), ale próba zrobienia listy klejnotów i pokazania rubinowej wersji mówi, że nadal jej nie ładowała. (wersja ruby powinna być 1.9.2)
EDYCJA 2
Zaktualizowałem mój rvm i teraz żadna z poprawek nie działa!
Wypisuje, że używa gemsetu w moim rvm, ale kiedy robię gem env, otrzymuję to:
eumir$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.6
- RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
- INSTALLATION DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
- EXECUTABLE DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-11
- GEM PATHS:
- /Users/eumir/.rvm/gems/ruby-1.8.7-p174@mygemset
- /Users/eumir/.rvm/gems/ruby-1.8.7-p174@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- :sources => ["http://rubygems.org/", "http://gemcutter.org"]
- "gem" => "--no-ri --no-rdoc"
- REMOTE SOURCES:
- http://rubygems.org/
- http://gemcutter.org
robić cd ../
i wtedy cd myfolder
a następnie wyniki gem env:
eumir$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.7.2
- RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.4.0]
- INSTALLATION DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest
- RUBY EXECUTABLE: /Users/eumir/.rvm/rubies/ruby-1.8.7-p174/bin/ruby
- EXECUTABLE DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-darwin-10
- GEM PATHS:
- /Users/eumir/.rvm/gems/ruby-1.8.7-p174@mygemset
- /Users/eumir/.rvm/gems/ruby-1.8.7-p174@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- :sources => ["http://rubygems.org/", "http://gemcutter.org"]
- "gem" => "--no-ri --no-rdoc"
- REMOTE SOURCES:
- http://rubygems.org/
- http://gemcutter.org
co jest właściwym środowiskiem. Jak widać, gemset został załadowany poprawnie (razem z klejnotami), ale nadal używa ruby systemowego zamiast rubinu rvmrc.
source path/to/.rvmrc
...cd ./
odświeży katalog i przeładuje rvmrc. Szukam rozwiązania, które nie będzie mnie potrzebowało do wpisania niczego innego.rvmrc
pliki nawet dla początkowego, odziedziczonego bieżącego katalogu roboczego (tj. Terminal zrobił chdir (2) przed uruchomieniem powłoki zamiast mieć powłokęcd
sam (gdzie RVM mógł to zauważyć)).Odpowiedzi:
Spróbuj zaktualizować instalację RVM, jeśli używasz czegoś starszego niż 1.6.10 (sprawdź swoją aktywną wersję za pomocą
rvm --version
).W niektórych skorupach:
Następnie uruchom ponownie inne istniejące powłoki lub uruchom
rvm reload
w nich.Uwaga: Kolejnym problemem, przed którym stanął OP, była manipulacja PATH po załadowaniu RVM do powłoki. Stworzyło to efekt „prawego zestawu klejnotów, ale niewłaściwa instalacja ruby”, który zniknął po „cd out, cd in” (ponieważ RVM w tym miejscu ponownie potwierdziłby swoją pozycję w PATH). Gdy powłoka jest uruchamiana w katalogu zawierającym
.rvmrc
ważne jest, aby RVM było ostatnią rzeczą prepend elementy do PATH (przynajmniej dowolne elementy PATH, które mogą zawieraćruby
(itd.), aby instalacja Ruby została wybrana w.rvmrc
będzie skuteczny).RVM organizuje źródła
.rvmrc
pliki „zahaczając” skorupęcd
polecenie (acd
funkcja powłoki w grzmotnąć , wpis wchpwd_functions
dla zsh ). Zwykle pozwala to złapać „normalne”cd
polecenie, które wpisujesz lub uruchamiasz za pomocą skryptu źródłowego po załadowaniu RVM.Nie mam lwa do testowania, ale podejrzewam, że to działa Terminal widelce, połączenia chdir (2) , następnie wykonuje twoją powłokę, aby ustalić początkowy katalog roboczy nowej powłoki. Oznacza to, że katalog jest już ustanowiony do czasu załadowania RVM do pliku inicjującego powłokę.
Historia wydaje się trochę zabłocona, ale RVM ma pewne wsparcie w pozyskiwaniu
.rvmrc
plik w początkowym katalogu roboczym powłoki, gdy jest ładowany po raz pierwszy. Wygląda na to, że może tak było ekran -specyficzne, ale w RVM commit cb649ba (Zawsze ładuj .rvmrc, jeśli w powłoce interaktywnej (otwórz nową kartę w tym samym katalogu)., 2011-05-14) złagodzono wymaganie, aby było źródłem.rvmrc
pliki dla dowolnej powłoki interaktywnej po pierwszym załadowaniu RVM. To zatwierdzenie było po raz pierwszy obecne w wersji 1.6.10 RVM. Kod zmienił się nieco od tego czasu, ale nadal działa w mniej więcej taki sam sposób w najnowszych wersjach.źródło
.rvmrc
uruchomić te polecenia? Dokładnie jakie linie są w twoim.rvmrc
? (Zwykle po prostu to robięrvm use ruby-1.9.2-head@mygemset
tam.)Lion Terminal wybiera / przywraca katalog roboczy, ustawiając go za pomocą chdir () przed uruchomieniem powłoki. Jeśli chcesz automatycznie wykonać jakąś dodatkową pracę związaną z katalogiem roboczym, powinieneś dostosować powłokę za pomocą skryptu startowego, który wykonuje pewne polecenie za pomocą $ PWD.
Zakładając, że używasz basha (domyślnie), najwyraźniej chciałbyś dodać coś takiego w ~ / .bashrc:
Nie jestem zaznajomiony z rvmc, ale zakładam, że musi użyć skryptu uruchamiania powłoki, aby dostosować polecenie „cd”, więc pamiętaj, aby wydać to polecenie po tym. Ponadto, jeśli nie masz jeszcze skryptów uruchamiania powłoki, zazwyczaj chcesz utworzyć ~ / .bash_profile i uruchomić go ~ / .bashrc, jeśli istnieje (rozejrzyj się po StackExchange lub użyj Google, aby znaleźć ten wspólny idiom).
źródło
Wiem, że to nie jest „poprawka”, ale możesz wyjść z terminalu za pomocą polecenia + opcja + q, aby wyjść bez zapisywania informacji o ścieżce.
Możesz też użyć iTerm2 ( http://www.iterm2.com/ ), ma kilka lepszych rzeczy niż domyślny terminal.
źródło
Poprawka 1: Dobra znalazłem lepsze rozwiązanie. Dlatego stworzyłem skrypt o nazwie
.loadrvmrc
i który zawierał tylko „cd ./” (także chmod + x it)Następnie załadowałem go do mojego pliku .bash_profile, ALE zauważ, że powinien być ładowany w porządku.
Najpierw załaduj .bashrc:
to twoja ścieżka (która ładuje rvm:
i NASTĘPNIE skrypt .loadrvmrc:
Voila! Możesz zamknąć terminal i otworzyć go wszystkimi kartami i wszystkimi odpowiednimi .rvmrcs.
=========== Poprawka 2: (nieprogramowa)
Naprawiłem to na razie. Może to kwestia czasu dla rvm lub bashrc, więc nie jestem pewien. Jeśli ktoś może opublikować lepsze rozwiązanie / odpowiedź na to pytanie, zrób to, a zmienię zaakceptowaną odpowiedź na to pytanie.
W każdym razie w domyślnym Terminalu właśnie się zmieniłem
Terminal > Preferences > Settings
a następnie sprawdzono Uruchomienie i dodanocd ./
jako skrypt startowy.Nadal jest to dla mnie brzydkie, ponieważ uruchomienie terminalu spowoduje
co jest do przyjęcia (dopóki nie pojawi się lepsze rozwiązanie).
źródło