Zawsze możesz wpisać, pwdaby wydrukować nazwę bieżącego katalogu roboczego. I czy mówisz, że Tab-uzupełnianie też nie działa? (Na niektórych komputerach, których używam, ten krótki monit pojawia się tylko wtedy, gdy loguję się jako root i z przyjemnością zostawiam to miejsce jako miłe ostrzeżenie. Ponieważ rzadko, jeśli w ogóle, trzeba się zalogować jako root: nie używasz roota , jesteś?)
Arjan
Alex, możesz nam powiedzieć, jakiej dystrybucji używasz?
inwertowanie
Używam Ubuntu.
Alex
Najnowsze Ubuntu? I czy mówisz, że Tab-uzupełnianie też nie działa?
Arjan
Wygląda na to, że zadajesz dwa pytania: dlaczego karta nie wypełnia automatycznie ścieżki i dlaczego monit jest tylko znakiem dolara zamiast [użytkownik @ ścieżka hosta]. Głosowanie na odpowiedzi jest trochę trudne, ponieważ żadna z odpowiedzi nie jest jednoznaczna.
Joseph Holsten
Odpowiedzi:
27
Ponieważ zadajesz dwa pytania, odpowiem na oba.
Dlaczego tabulatory nie uzupełniają ścieżek plików?
Ponieważ powłoka albo go nie obsługuje, albo uzupełnianie tabulatorów nie jest włączone.
Aby rozwiązać ten problem, najpierw musisz dowiedzieć się, jaka jest twoja powłoka. Na maszynie, której powłokę lubisz, uruchom
echo $SHELL
Możesz zobaczyć /bin/bashcoś wspólnego , coś mniej powszechnego /bin/tcsh, /bin/zshlub coś zupełnie innego.
Teraz możesz zmienić powłokę na maszynie Ubuntu. Na tym komputerze najpierw upewnij się, że żądana powłoka istnieje. Ponieważ powłoka może nie znajdować się w tym samym miejscu na komputerze Ubuntu, co na drugim, sprawdź lokalizację, wpisując
which bash
To daje ścieżkę skorupy chcesz, coś podobnego /bin/bash, /usr/bin/bashalbo /usr/local/bin/bash. Oczywiście, jeśli chcesz powłoki innej niż bash, powiesz which tcsh, which zshlub podobny.
Jeśli nie widzisz ścieżki, ale widzisz bash not found, musisz zainstalować odpowiedni pakiet i ponownie użyć, whichaby dowiedzieć się, gdzie została zainstalowana powłoka.
Ścieżką wybranej powłoki możesz w końcu zmienić powłokę, uruchamiając
chsh -s /bin/bash
zastępując /bin/bashdowolną odpowiednią ścieżką dla wybranej powłoki.
Dlaczego podpowiedź to znak dolara zamiast [użytkownik @ ścieżka hosta]?
Ze względu na szybką zmiennych środowiskowych $PS1, $PS2i tak dalej. Te rzeczy nie są zwykle przenośne między powłokami, więc oto kilka linków dla prawdopodobnych kandydatów:
Twój problem może polegać na tym, że nie masz pliku .profile lub .bashrc, który ustawia PS1, lub może być tak, że twoja powłoka logowania wcale nie jest bash.
Bash używa gnu readlinedo takich rzeczy jak uzupełnianie tabulatorów. Jest to skomplikowany temat, a readline ma nawet własny plik konfiguracyjny dla użytkownika.
Zobacz man bash, man shoraz man 3 readline. Bash odpowiada na --version. Na wielu systemach Linux /bin/shnie jest tak naprawdę bashem, ale zwykle okaleczoną wersją ash.
nie dashzamiast ash? myślałem, że przeczytałem coś takiego
knittl
2
+1 za brak posiadania .profile lub .bashrc - chyba że Alex początkowo założył swoje konto podczas instalacji Ubuntu, wówczas domyślnie nowi użytkownicy nie mają .bashrc / nie mają PS1.
Cory Plastek
4
myślę, że nie używasz bash, ale sh i twój monit nie jest ustawiony poprawnie (jeśli jest to możliwe nawet z sh).
możesz uzyskać aktualną powłokę, wpisując: echo $SHELL
Możesz ustawić monit za pomocą innych powłok. Nie ma żadnej powłoki o nazwie sh. Echoing $SHELLwypisze zmienną środowiskową o nazwie SHELL. Ta zmienna środowiskowa po prostu wskazuje powłokę i jest ustawiana tylko przez bash. Jest w przybliżeniu bezużyteczny przy ustalaniu, która powłoka jest uruchomiona, ponieważ słabo wskazuje tylko, że niektóre elementy nadrzędne bieżącego procesu mogły być bash.
DigitalRoss,
nazwa programu powłoki to sh (w / bin / sh). i tak, echo $ SHELL wypisze zmienną SHELL, która jest zwykle ustawiona.
knittl
Każdy system uniksowy ma plik wykonywalny o nazwie /bin/shtak. Ale nie znam żadnej powłoki o nazwie sh. Mogę myśleć ash, ksh, csh, bash, zsh, i tcsh. Pierwszy to zwykły / bin / sh na Linuksie i NetBSD, ostatni to zwykła powłoka FreeBSD, a pozostałe to opcjonalne powłoki. Wiele środowisk pulpitu zmienia powłokę logowania użytkownika na bash, pozostawiając / bin / sh jako ash.
DigitalRoss,
2
@DigitalRoss shjest powłoką Bourne'a. en.wikipedia.org/wiki/Bourne_shell Niektóre systemy (Solaris) wciąż zawierają wersję powłoki Bourne'a, która nie jest tylko kopią jednej z re-implementacji (ash, dash, bash, ksh, zsh).
Chris Johnsen,
... a bash jest znany jako „Powłoka Bourne'a”, która odziedziczyła niektóre cechy powłoki Bourne'a, csh i ksh.
inwertowanie
2
Musisz ustawić zmienną o nazwie PS1 na jednym ze skryptów logowania, na przykład / etc / profile lub ~ / .bashrc. Będzie to zależeć od twojej dystrybucji.
pwd
aby wydrukować nazwę bieżącego katalogu roboczego. I czy mówisz, że Tab-uzupełnianie też nie działa? (Na niektórych komputerach, których używam, ten krótki monit pojawia się tylko wtedy, gdy loguję się jako root i z przyjemnością zostawiam to miejsce jako miłe ostrzeżenie. Ponieważ rzadko, jeśli w ogóle, trzeba się zalogować jako root: nie używasz roota , jesteś?)Odpowiedzi:
Ponieważ zadajesz dwa pytania, odpowiem na oba.
Dlaczego tabulatory nie uzupełniają ścieżek plików?
Ponieważ powłoka albo go nie obsługuje, albo uzupełnianie tabulatorów nie jest włączone.
Aby rozwiązać ten problem, najpierw musisz dowiedzieć się, jaka jest twoja powłoka. Na maszynie, której powłokę lubisz, uruchom
Możesz zobaczyć
/bin/bash
coś wspólnego , coś mniej powszechnego/bin/tcsh
,/bin/zsh
lub coś zupełnie innego.Teraz możesz zmienić powłokę na maszynie Ubuntu. Na tym komputerze najpierw upewnij się, że żądana powłoka istnieje. Ponieważ powłoka może nie znajdować się w tym samym miejscu na komputerze Ubuntu, co na drugim, sprawdź lokalizację, wpisując
To daje ścieżkę skorupy chcesz, coś podobnego
/bin/bash
,/usr/bin/bash
albo/usr/local/bin/bash
. Oczywiście, jeśli chcesz powłoki innej niż bash, powieszwhich tcsh
,which zsh
lub podobny.Jeśli nie widzisz ścieżki, ale widzisz
bash not found
, musisz zainstalować odpowiedni pakiet i ponownie użyć,which
aby dowiedzieć się, gdzie została zainstalowana powłoka.Ścieżką wybranej powłoki możesz w końcu zmienić powłokę, uruchamiając
zastępując
/bin/bash
dowolną odpowiednią ścieżką dla wybranej powłoki.Dlaczego podpowiedź to znak dolara zamiast [użytkownik @ ścieżka hosta]?
Ze względu na szybką zmiennych środowiskowych
$PS1
,$PS2
i tak dalej. Te rzeczy nie są zwykle przenośne między powłokami, więc oto kilka linków dla prawdopodobnych kandydatów:bash
ma obszerny podręcznik ze stronami na temat zmiennych Bash (w tymPS1
& c) i drukowania monitu (który opisujePROMPT_COMMAND
długą nazwę dlaPS1
). Dodaj następujący wiersz do swojego~/.bashrc
tcsh
ma podręcznik online (tylko jego stronę man) z sekcją dotyczącą zmiennych środowiskowych pytania . Dodaj następujący wiersz do swojego~/.tcshrc
zsh
ma instrukcję obsługi z prostym przewodnikiem po podpowiedziach , a także instrukcję z bardzo szczegółowym opisem rozszerzenia Prompt Expansion . Dodaj następujący wiersz do swojego~/.zshrc
źródło
Bash nie jest jedyną powłoką.
Twój problem może polegać na tym, że nie masz pliku .profile lub .bashrc, który ustawia PS1, lub może być tak, że twoja powłoka logowania wcale nie jest bash.
Bash używa
gnu readline
do takich rzeczy jak uzupełnianie tabulatorów. Jest to skomplikowany temat, a readline ma nawet własny plik konfiguracyjny dla użytkownika.Zobacz
man bash
,man sh
orazman 3 readline
. Bash odpowiada na--version
. Na wielu systemach Linux/bin/sh
nie jest tak naprawdę bashem, ale zwykle okaleczoną wersjąash
.źródło
dash
zamiastash
? myślałem, że przeczytałem coś takiegomyślę, że nie używasz bash, ale sh i twój monit nie jest ustawiony poprawnie (jeśli jest to możliwe nawet z sh).
możesz uzyskać aktualną powłokę, wpisując:
echo $SHELL
jeśli chcesz rozpocząć bash, po prostu wpisz
bash
źródło
sh
. Echoing$SHELL
wypisze zmienną środowiskową o nazwieSHELL
. Ta zmienna środowiskowa po prostu wskazuje powłokę i jest ustawiana tylko przez bash. Jest w przybliżeniu bezużyteczny przy ustalaniu, która powłoka jest uruchomiona, ponieważ słabo wskazuje tylko, że niektóre elementy nadrzędne bieżącego procesu mogły być bash./bin/sh
tak. Ale nie znam żadnej powłoki o nazwiesh
. Mogę myślećash
,ksh
,csh
,bash
,zsh
, itcsh
. Pierwszy to zwykły / bin / sh na Linuksie i NetBSD, ostatni to zwykła powłoka FreeBSD, a pozostałe to opcjonalne powłoki. Wiele środowisk pulpitu zmienia powłokę logowania użytkownika na bash, pozostawiając / bin / sh jako ash.sh
jest powłoką Bourne'a. en.wikipedia.org/wiki/Bourne_shell Niektóre systemy (Solaris) wciąż zawierają wersję powłoki Bourne'a, która nie jest tylko kopią jednej z re-implementacji (ash, dash, bash, ksh, zsh).Musisz ustawić zmienną o nazwie PS1 na jednym ze skryptów logowania, na przykład / etc / profile lub ~ / .bashrc. Będzie to zależeć od twojej dystrybucji.
Przykład: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
źródło