jak uzyskać powłokę rc do odczytu .rcrc podczas uruchamiania na ubuntu?

2

Próbuję użyć rc jako moja powłoka logowania w Ubuntu (używając chsh). Zauważyłem, że nie odczytuje pliku $ HOME / .rcrc podczas uruchamiania. Dokumentacja mówi, że jeśli zostanie wywołana jako powłoka logowania z * argv [0] == '-' lub z flagą -l, to odczytuje plik .rcrc i mogę to sprawdzić, wykonując go bezpośrednio przez $ rc -l. lub z zsh ARGV0=-rc /usr/bin/rc.

Jednak po wykonaniu logowania nie odczytuje pliku .rcrc, a wyjście ps wskazuje, że nazwa powłoki to po prostu „rc”, a nie „-rc”. Tak więc moje pytanie brzmi: jak pobrać / usr / bin / rc do odczytu .rcrc przy starcie? i dlaczego ubuntu nie ma przedrostka „-” w powłoce? Czy istnieje inny sposób wykrywania powłoki: powłoka logowania?

rahul
źródło

Odpowiedzi:

2

Emulatory terminali Linux w GUI zazwyczaj nie otwierają domyślnie powłok logowania, w przeciwieństwie do np. Terminal OS X.

Jeśli naciśniesz Ctrl Alt F1 i zaloguj się w linii poleceń, będziesz miał powłokę logowania, której .rcrc komendy zostaną wykonane.


W Terminalu Ubuntu przejdź do Edytuj »Preferencje profilu» Tytuł i polecenie »Uruchom polecenie jako powłokę logowania .

Ewentualnie emulator terminala może obsługiwać wykonanie dowolnego polecenia. Posługiwać się /usr/bin/rc -l.


Możesz także utworzyć krótki skrypt, który po prostu uruchamia się rc jako powłoka logowania:

#!/bin/bash
exec -l /usr/bin/rc "$@"

To się rozpocznie bash aby wykonać skrypt, a skrypt całkowicie go zastępuje rc wywoływany jako powłoka logowania ( -l argument) oraz wszystkie inne argumenty tego skryptu. Możesz także dodać -c argument, aby oczyścić środowisko.

Zapisz jako /usr/bin/rcl, wykonaj plik wykonywalny i dodaj odpowiedni wpis do /etc/shells.

Daniel Beck
źródło
dzięki, więc czy są jakieś rozwiązania dla powłoki rc do odczytu pliku inicjującego użytkownika (np. .rcrc)? Co mam zrobić, jeśli chcę ustawić monit w rc?
rahul
Czy przeczytałeś ostatni akapit, tj. rzeczywista odpowiedź? Zrób to i załaduje rcrc.
Daniel Beck
Tak, niestety mi to nie pomaga, ponieważ: - Nie używam gnome-terminal (moje pytanie dotyczyło powłoki ogólnej, a nie konkretnego emulatora). Liczyłem na rozwiązanie oparte na / etc / passwd. Udało mi się obejść mój problem za pomocą skryptu opakowującego. Ale dziękuję za odpowiedź. Potwierdziło to to, co podejrzewałem (w innych unixach, takich jak solaris, to samo działa).
rahul
@ blufox Większość terminali powinna umożliwiać wykonywanie określonych poleceń zamiast domyślnej powłoki. /usr/bin/rc -l będzie działać w twoim przypadku. Oczywiście to obejdzie /etc/passwd / chsh. // Możesz oczywiście napisać skrypt, który po prostu działa /usr/bin/rc -l, zapisz go na /usr/bin/rcl, uczyń go wykonywalnym i dodaj do /etc/shells. Natychmiastowa nowa powłoka!
Daniel Beck
xterm nie :), a ja użyłem tego samego rozwiązania - opakowania.
rahul