W dniu 11.04 dokonałem nowej instalacji mojego systemu. Częścią tej instalacji było zainstalowanie rvm , który wbija się rvm.sh
w /etc/profile.d/
. To nie działa, ponieważ /etc/profile
(który ładuje każdy + r /etc/profile.d/*.sh
) nie jest ładowany. Zgodnie z dokumentacją profil jest pozyskiwany tylko wtedy, gdy bash jest uruchamiany podczas logowania. Aby to sprawdzić, przywołałem bash --login
, po czym rvm
było dostępne.
To działało dla mnie w poprzednich wersjach Ubuntu bez żadnej konfiguracji. Oznacza to, że nowa instalacja 10.10 poprawnie wygeneruje profil / .d.
Moje pytanie brzmi: czy jest coś, co robię źle, czy też są jakieś nowe założenia w Natty, które to złamały? Moje obecne obejście to source /etc/profile
in ~/.bashrc
(co jest okropne, ponieważ profil ma się ładować przed bashrc, ale załatwia sprawę).
/etc/profile
(a tym samym .d). Dzięki za wyjaśnienie - wygląda na to, że wymaga to skontaktowania się z ludem RVM./etc/profile
i~/.profile
podczas logowania. To dziwne, ponieważ zawsze działało ze starszymi wersjami. Myślę, że to nie jest rozwiązanie, ale obejście.Istnieje jednak plik
/etc/bash.bashrc
odczytywany przez gnome-terminal, który jest „ogólnosystemowym plikiem .bashrc dla interaktywnych powłok bash (1)”.Moje wywołanie funkcji rvm
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
poszło tam i działa dobrze dla kilku użytkowników tego systemu.źródło
/etc/bash.bashrc
. Cóż, przynajmniej na Debian / Ubuntu. Bash zwykle nie odczytuje bashrc całego systemu; debian załatał to, aby to zrobić.Instalacja RVM jako wielu użytkowników wymaga od użytkownika uruchomienia tej komendy:
(ponieważ Ubuntu nie pobiera /etc/profile.d przy logowaniu)
źródło
/etc/profile.d/
podczas logowania, ponieważ domyślne/etc/profile
pętle i źródła plików/etc/profile.d/
. Jeśli jednakrvm.sh
zawiera kod dla interaktywnych powłok, takich jak funkcje lub aliasy, ich pozyskiwanie/etc/profile
jest bezcelowe. Konfiguracja interaktywnych sesji bash musi być włączona.bashrc
.jeśli masz ZSH lub OH-MY-ZSH, twój profil to / etc / zprofile
źródło
Znalazłem dla tych, którzy nie lubią w pełni ponownie uruchamiać swoich urządzeń, chyba że jest to absolutnie wymagane następujące ...
Nie trzeba ponownie uruchamiać całego komputera, aby zmiany odniosły
/etc/profile
skutek. Wszystko, czego potrzebujesz, to ponowne uruchomienie graficznego interfejsu graficznego XWindows, aby ponownie odczytał konfiguracje (tak jak gdyby miał zostać uruchomiony w ramach restartu systemowego).Dla mnie używam xUbuntu, który używa LightDM, ale możesz sub w dowolnym pliku wykonywalnym wywołującym bieżący pulpit.
Po pierwsze, nie możesz użyć emulatora terminala z poziomu samego graficznego interfejsu użytkownika (w tym przypadku nie tylko w LightDM), musisz użyć SSH lub dodatkowej konsoli (jeśli przytrzymasz Ctrl + Alt i naciśniesz klawisz F lub klawisz numeryczny powinieneś odejść od graficznego pulpitu logowania lub ekranu do zwykłego okna terminala). Sugeruję również, abyś zamknął wszelkie zdalne elementy pulpitu, takie jak VNC, jeśli używasz SSH (oczywiście SSH można podłączyć, po prostu nie chcesz, aby otwarte okno VNC wyświetlało 0 podczas próby ponownego uruchomienia, ponieważ może to zawiesić restart podczas czeka na zakończenie sesji VNC).
Robię to cały czas za pomocą SSH i jest to duży ratownik, szczególnie gdy nie jesteś fizycznie przy swoim komputerze i nie masz ochoty czekać na pełne ponowne uruchomienie i ponowne połączenie :-D
Teraz prosta część raz w „dodatkowym” problemie z terminalem lub SSH: (Tak, to zabije twoją bieżącą sesję, upewnij się, że nie masz nic przeciwko, zapisz wszelkie otwarte dokumenty lub pracę)
poczekaj minutę, ponieważ zabija pulpit, a następnie uruchamia go ponownie (może to potrwać kilka dobrych sekund, ponieważ rzeczy są zatrzymywane, a następnie uruchamiane ponownie przy uruchomieniu)
To wszystko, teraz, gdy wrócisz do konsoli 0 lub użyjesz VNC do ponownego połączenia, zostaniesz przywitany monitem logowania i zalogowaniem się jak zwykle, a jeśli otworzysz emulator terminala i przejdziesz do wydania polecenia, powinieneś teraz nie ma żadnych problemów, ponieważ wszystko zostało ponownie zakupione, tak jak w przypadku pełnego ponownego uruchomienia komputera.
Wystarczy pamiętać, jeśli wyda
sudo service lightdm restart
[lubstop
,start
niezależnie] od wewnątrz samego środowiska graficznego przy użyciu emulatora terminala polecenie po prostu powiesić tam i nic nie wydaje się dzieje. Wynika to z faktu, że obecnie używasz tej konsoli (czyli wyświetlacza) 0, więc nie może ona w pełni zejść i wrócić, ponieważ czeka, aż pulpit nie będzie używany przed uruchomieniem polecenia.Ostatnia uwaga: nie próbowałem ponownie uruchomić środowiska w środowisku pulpitu w emulatorze terminali, a następnie przełączyć się na inną konsolę, która może go zrestartować, ale jeśli już zamierzasz przełączyć konsolę, dlaczego po prostu nie uruchomić polecenia stamtąd tak jak powinno być?
źródło
echo ". .profile" >> ~ / .bashrc
A następnie otwórz kolejne okno. Myślę, że to łatwe podejście.
źródło
.profile
źródła domyślne.bashrc
, dla większości użytkowników spowodowałoby to zapętlenie.