Na jednym z moich serwerów pojawia się monit [użytkownik @ ścieżka hosta] ... i mogę wcisnąć „tab”, aby automatycznie wypełnić ścieżkę.
Ale na moim nowym serwerze Ubuntu jest to tylko znak dolara?
Na jednym z moich serwerów pojawia się monit [użytkownik @ ścieżka hosta] ... i mogę wcisnąć „tab”, aby automatycznie wypełnić ścieżkę.
Ale na moim nowym serwerze Ubuntu jest to tylko znak dolara?
Odpowiedzi:
Ponieważ zadajesz dwa pytania, odpowiem na oba.
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/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
which bash
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, powiesz which 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
chsh -s /bin/bash
zastępując /bin/bash
dowolną odpowiednią ścieżką dla wybranej powłoki.
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 tym PS1
& c) i drukowania monitu (który opisuje PROMPT_COMMAND
długą nazwę dla PS1
). Dodaj następujący wiersz do swojego~/.bashrc
export PS1='[\u@\h \w] '
tcsh
ma podręcznik online (tylko jego stronę man) z sekcją dotyczącą zmiennych środowiskowych pytania . Dodaj następujący wiersz do swojego~/.tcshrc
set prompt='[%n@%m %~] '
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
export PS1='[%n@%m %~] '
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
oraz man 3 readline
. Bash odpowiada na --version
. Na wielu systemach Linux /bin/sh
nie jest tak naprawdę bashem, ale zwykle okaleczoną wersją ash
.
dash
zamiast ash
? myślałem, że przeczytałem coś takiego
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
jeśli chcesz rozpocząć bash, po prostu wpisz bash
sh
. Echoing $SHELL
wypisze 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.
/bin/sh
tak. 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.
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
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ś?)