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ą chsh
polecenia. 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/passwd
gdzie ostatni wpis jest domyślną powłoką. Zrób to /bin/bash
.
Alternatywnie, możesz zmienić, zmienić domyślne ustawienie systemowe, aby /bin/sh
nie być bash.
/bin/sh
jest /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/passwd
jest 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 usermod
zmiana /etc/passwd
.
/etc/passwd
.
/bin/bash
tak /bin/sh
samo jak jej uruchomienie --posix
, co może mieć niepożądane skutki.
/bin/bash
jako swojej skorupy te wszystkie lata na wszystkich maszynach. Potrzebujesz bardziej konkretnego argumentu.
Domyślna powłoka systemowa /bin/sh
w 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 bash
interaktywnej powłoki bez zmiany jakichkolwiek ustawień użytkownika (nie chsh
lub 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ż dash
wymaga 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 bash
zaawansowanych 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/sh
jest używany jako interpreter skryptów powłoki kompatybilnych z POSIX - niekoniecznie najlepsza powłoka interaktywna; jeśli chcesz bash
być powłoką systemową, powinieneś ustawić preferowaną powłokę logowania za pomocą chsh
lub odpowiednich adduser
wywołań. użycie dpkg-reconfigure
jest 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 bash
bę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 zsh
do zestawu zsh
jako / bin / sh, a następnie dpkg-reconfigure dash
do zestawu dash
jak / 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 dash
może to sh
wskazywać 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
-l
opcja?