Mam hostowany serwer Debian. Kiedy loguję się przez ssh, wita mnie środowisko sh. Jak to zmienić, aby zacząć w środowisku bash?
Mam hostowany serwer Debian. Kiedy loguję się przez ssh, wita mnie środowisko sh. Jak to zmienić, aby zacząć w środowisku bash?
Odpowiedzi:
Jako zwykły użytkownik możesz zmienić domyślną powłokę logowania za pomocą chshpolecenia. Oto przykład:
chsh -s /bin/bash
Inną opcją jest użycie usermod jako root:
usermod -s /bin/bash username
adduser, powinien ustawić domyślnie bash. Domyślnie jest skonfigurowany w /etc/adduser.conf. W przeciwnym razie podaj powłokę jawnie za pomocą useradd.
Edytujesz, /etc/passwdgdzie ostatni wpis jest domyślną powłoką. Zrób to /bin/bash.
Alternatywnie, możesz zmienić, zmienić domyślne ustawienie systemowe, aby /bin/shnie być bash.
/bin/shjest /bin/dash. A dla tego, co jest warte, pozostałe dwie odpowiedzi są identyczne i osiągają ten sam cel na różne sposoby. Cokolwiek.
/etc/passwdjest bardzo odradzane. Błąd edycji może zepsuć loginy wszystkim użytkownikom, wymagając naprawy nośnika odzyskiwania lub rozruchu w trybie pojedynczego użytkownika. Istnieją narzędzia takie jak usermodzmiana /etc/passwd.
/etc/passwd.
/bin/bashtak /bin/shsamo jak jej uruchomienie --posix, co może mieć niepożądane skutki.
/bin/bashjako swojej skorupy te wszystkie lata na wszystkich maszynach. Potrzebujesz bardziej konkretnego argumentu.
Domyślna powłoka systemowa /bin/shw najnowszych wydaniach Ubuntu jest skonfigurowana tak, aby była /bin/dash. Po prostu uruchamiając następujące polecenie:
sudo dpkg-reconfigure dash
możesz zmienić to z powrotem na stare domyślne /bin/bash.
Dzięki temu możesz osiągnąć pożądany efekt posiadania bashinteraktywnej powłoki bez zmiany jakichkolwiek ustawień użytkownika (nie chshlub usermod), i będzie działać dla wszystkich użytkowników, którzy aktualnie ustawili powłokę na /bin/sh.
Jest tylko jedna mała wada: czas uruchamiania Ubuntu może się nieznacznie wydłużyć, ponieważ dashwymaga mniejszej ilości pamięci do załadowania i nieco szybszej pracy (nic dziwnego - jest tak ograniczony pod względem funkcji). Myślę jednak, że trudno będzie zmierzyć ten efekt, szczególnie w środowisku hostingowym.
Czasami denerwujące jest także wyświetlanie skryptów powłoki, które nie działają poprawnie, ponieważ używają niektórych bashzaawansowanych funkcji, które nie są obsługiwane przez dash. Korzystanie z tego przepisu sprawi, że tak się nie stanie.
Aby uzyskać więcej informacji, zobacz wiki Ubuntu na ten temat .
/bin/shjest używany jako interpreter skryptów powłoki kompatybilnych z POSIX - niekoniecznie najlepsza powłoka interaktywna; jeśli chcesz bashbyć powłoką systemową, powinieneś ustawić preferowaną powłokę logowania za pomocą chshlub odpowiednich adduserwywołań. użycie dpkg-reconfigurejest złym wyborem, jeśli użytkownik A chce zsh, a użytkownik B chce bash i obaj nalegają na ustawienie / bin / sh jako domyślnej powłoki.
zsh, a użytkownik B bashbędzie go miał. Jeśli userC jest skonfigurowany sh, będzie miał bash, co i tak jest aktualnym domyślnym Ubuntu dla nowych użytkowników
dpkg-reconfigure zshdo zestawu zshjako / bin / sh, a następnie dpkg-reconfigure dashdo zestawu dashjak / bin / sh, który jest swego rodzaju impasu; mówię głównie, że lepiej ustawić powłokę logowania na powłokę, której chcemy używać, niż przechodzić przez obręcze, aby uczynić / bin / sh dobrą powłoką logowania.
dpkg-reconfigure dashmoże to shwskazywać bash, a nie okaleczyć dash. Wszystkie pozostałe pociski pozostaną nienaruszone.
W przypadku, gdy próbujesz użyć konta współdzielonego (z dowolnego powodu) i nie możesz zmienić domyślnej powłoki, możesz uruchomić
ssh -t <user@hostname> bash -l
Jeśli chcesz uchronić swoje środowisko przed jakąś inną powłoką, możesz najpierw uruchomić tę powłokę; na przykład
ssh -t <user@hostname> ksh -c bash -l
-lopcja?