Jak zmienić domyślną powłokę na bash, jeśli nie mam dostępu do chsh ani / etc / passwd?
8
Pracuję na uniwersyteckim zdalnym koncie Linuksa, a domyślna powłoka niestety cshnie kończy tabulacji. Jak mogę zmienić domyślną powłokę mojego konta na bash? chshjest niedostępne.
Z jakiego systemu korzysta uniwersytet do przechowywania kont? ldapmodifymoże zadziałać.
user1686,
Lub, jeśli używają NIS, ypchshpowinno być właściwym poleceniem.
m000
Jeśli chcesz tylko uzupełnienia tabulatorów, możesz dodać je do ~ / .cshrc set fileci set autolist.
Hennes,
Odpowiedzi:
11
Prawdopodobnie powinieneś spróbować zapytać swoich sysadminów, czy mogą zmienić dla ciebie domyślną powłokę. Jeśli nie mogą lub nie chcą (jak w przypadku, gdy byłem na studiach), obejściem, którego użyłem, było dodanie
# Exec bash if using an interactive shell.if($?prompt)then
setenv SHELL /path/to/bash
exec $SHELL
endif
do .cshrc. (Pamiętaj, aby zastąpić /path/to/bashgo prawdziwą ścieżką, oczywiście. Może to być nawet wersja, bashktóra znajduje się w twoim katalogu domowym, jeśli wersja dostarczona przez system jest zbyt nieaktualna dla twojego gustu.) Dla wydajności, najlepiej zrobić to tak wcześnie, .cshrcjak to możliwe, aby uniknąć dodatkowego .cshrcprzetwarzania, które stanie się dyskusyjne po bashzastąpieniu cshprocesu.
ssh -t yourhost exec -a bash -l bashaby całkowicie zastąpić oryginalną powłokę, zamiast działać jako proces w początkowej powłoce.
chepner
@chepner: Interesujące, sam używam prostego ssh -t host bashrozwiązania w podobnej sytuacji, ale twoja droga jest lepsza. W ogóle o tym nie myślałem exec, dzięki! Zaktualizuję post z twoją sugestią.
Daniel Andersson
Trochę mi się podoba, używając argumentów dla bashwbudowanego polecenia exec.
chepner
@chepner: Ach tak, próbowałem go teraz na komputerze z zsh jako domyślnej powłoki i to nie na obu -ai -l. Zmodyfikuję przykład w mojej odpowiedzi.
Daniel Andersson
0
Najlepszym rozwiązaniem, jakie znalazłem, było rozwiązanie wymiany stosów. Oto wymiana stosu linków, a oto rozwiązanie:
utwórz plik .profile w swoim katalogu domowym i wklej poniżej lub dodaj na końcu pliku .profile, jeśli już go masz.
case $-in*i*)# Interactive session. Try switching to bash.if[-z "$BASH"];then# do nothing if running under bash already
bash=$(command -v bash)if[-x "$bash"];then
export SHELL="$bash"
exec "$bash"fifiesac
szukałem dużo, gdy używasz uwierzytelniania LADP przez PAM, myślę, że najlepszym rozwiązaniem jest umieszczenie SHELL = / bin / bash exec / bin / bash w pliku .profile w katalogu domowym użytkownika
ldapmodify
może zadziałać.ypchsh
powinno być właściwym poleceniem.set filec
iset autolist
.Odpowiedzi:
Prawdopodobnie powinieneś spróbować zapytać swoich sysadminów, czy mogą zmienić dla ciebie domyślną powłokę. Jeśli nie mogą lub nie chcą (jak w przypadku, gdy byłem na studiach), obejściem, którego użyłem, było dodanie
do
.cshrc
. (Pamiętaj, aby zastąpić/path/to/bash
go prawdziwą ścieżką, oczywiście. Może to być nawet wersja,bash
która znajduje się w twoim katalogu domowym, jeśli wersja dostarczona przez system jest zbyt nieaktualna dla twojego gustu.) Dla wydajności, najlepiej zrobić to tak wcześnie,.cshrc
jak to możliwe, aby uniknąć dodatkowego.cshrc
przetwarzania, które stanie się dyskusyjne pobash
zastąpieniucsh
procesu.źródło
Możesz po prostu się połączyć
aby automatycznie uruchomić powłokę Bash po zalogowaniu.
Z poniższych komentarzy możesz zobaczyć alternatywę
exec
uruchomi nowy proces i wyjdzie ze starego, więccsh
proces zakończy się bezpośrednio.Jeśli dołączymy
-l
na końcu polecenia jako argument do Basha, będzie on traktowany jako powłoka logowania, ale być może nie jest to konieczne.źródło
ssh -t yourhost exec -a bash -l bash
aby całkowicie zastąpić oryginalną powłokę, zamiast działać jako proces w początkowej powłoce.ssh -t host bash
rozwiązania w podobnej sytuacji, ale twoja droga jest lepsza. W ogóle o tym nie myślałemexec
, dzięki! Zaktualizuję post z twoją sugestią.bash
wbudowanego poleceniaexec
.-a
i-l
. Zmodyfikuję przykład w mojej odpowiedzi.Najlepszym rozwiązaniem, jakie znalazłem, było rozwiązanie wymiany stosów. Oto wymiana stosu linków, a oto rozwiązanie:
utwórz plik .profile w swoim katalogu domowym i wklej poniżej lub dodaj na końcu pliku .profile, jeśli już go masz.
źródło
szukałem dużo, gdy używasz uwierzytelniania LADP przez PAM, myślę, że najlepszym rozwiązaniem jest umieszczenie SHELL = / bin / bash exec / bin / bash w pliku .profile w katalogu domowym użytkownika
źródło