Do czego służy polecenie „Uruchom polecenie jako powłoka logowania”?

28

Mam zainstalowanych kilka oddzielnych programów, z których niektóre wymagają przejścia do ustawień terminala GUI i włączenia / wyłączenia opcji „Uruchom polecenie jako powłoka logowania”, aby oba działały.

Przykład:

Zainstalowałem Ruby on Rails . Niestety muszę przejść do opcji terminalu i włączyć opcję „Uruchom komendę jako powłokę logowania”, aby była ona w mojej ŚCIEŻCE.

Nie było to zbyt wielkim problemem, dopóki nie zainstalowałem sexy-bash-prompt , który działa tylko wtedy, gdy opcja jest wyłączona.

Moje pytanie brzmi zatem: co robi „Uruchom polecenie jako powłoka logowania”? Czy istnieje sposób, aby uruchomić rzeczy, które są wyłączone, gdy są wyłączone, aby działały jako powłoka logowania?

AlbertEngelB
źródło

Odpowiedzi:

31

Zakładając, że twoja powłoka to Bash (domyślna wersja Ubuntu), są to następujące różnice:

  • Podczas uruchamiania jako powłoka logowania Bash odczyta ~/.bash_profile(lub jeśli nie istnieje ~/.profile) podczas uruchamiania. W niektórych przypadkach ten plik również czyta ~/.bashrc.

  • Kiedy uruchomiony jako non-logowania powłoki, atakujących będzie czytać ~/.bashrc.

Dlaczego więc widzisz różne zachowania podczas działania jako powłoka logowania / braku logowania? Ponieważ twoje .bash_profile/ .profilerobi inne rzeczy niż twoje .bashrc.

Rozwiązaniem, które polecam w twoim przypadku, jest skopiowanie dostosowań dokonanych do .bash_profile/ .profile, wkleić je .bashrci wyłączyć „Uruchom polecenie jako powłokę logowania”.

Andrea Corbellini
źródło
Ahh ok. Uznałem, że ma to związek z tym, który profil logowania czyta (źródło .bashrc naprawia niektóre z moich problemów). Spróbuję, przepraszam za okropnie napisane pytanie.
AlbertEngelB
Dziękuję za zwięzłe wyjaśnienie. Często zdarza się, że ludzie po prostu przechowują swoje dostosowania w .bashrc i mają plik .bash_profile, aby uzyskać źródło .bashrc. Dostosowania specyficzne dla logowania powinny być przechowywane tylko w pliku .bash_profile.
MichaelZ
1
Dlaczego nie po prostu pobrać .bashrc do .bash_profile i pozostawić powłokę logowania włączoną? Czy to wykonalne?
Dr Nefario,