12

На одном из моих серверов это приглашение [user @ host path] ... и я могу нажать "tab" для автоматического заполнения пути.

Но на моем новом сервере Ubuntu это просто знак доллара?

4 ответа4

25

Поскольку вы задаете два вопроса, я отвечу на оба.

Почему не вкладки автозаполнения пути к файлам?

Потому что ваша оболочка либо не поддерживает ее, либо завершение табуляции не включено.

Чтобы решить эту проблему, вам сначала нужно узнать, какова ваша оболочка. На машине, чья оболочка тебе нравится, беги

echo $SHELL

Вы можете увидеть общий /bin/bash , или что-то менее распространенное, например /bin/tcsh , /bin/zsh или что-то еще полностью.

Теперь вы можете изменить свою оболочку на машине с Ubuntu. На этом компьютере сначала убедитесь, что необходимая оболочка существует. Поскольку оболочка может не находиться в том же месте на компьютере с Ubuntu, что и на другом, проверьте расположение, набрав

 which bash

Это даст вам путь к нужной вам оболочке, например, /bin/bash , /usr/bin/bash или /usr/local/bin/bash . Конечно, если вам нужна оболочка, отличная от bash, вы скажете, which tcsh , which zsh или аналогичный.

Если вы не видите пути, но вместо того, чтобы увидеть bash not found то вам необходимо установить соответствующий пакет, и снова использовать which , чтобы выяснить , где была установлена оболочка.

Используя путь выбранной вами оболочки, вы можете, наконец, изменить ее, запустив

chsh -s /bin/bash

заменив /bin/bash на любой подходящий путь для вашей оболочки.

Почему вместо [user @ host path] отображается знак доллара?

Из-за вашей подсказки переменных среды $PS1 , $PS2 и т.д. Эти вещи не всегда переносимы между оболочками, поэтому вот несколько ссылок для возможных кандидатов:

bash есть обширное руководство со страницами, посвященными переменным Bash (включая PS1 и т. д.) и « Печать приглашения» (где описывается PROMPT_COMMAND , длинное имя для PS1). Добавьте следующую строку в ваш ~/.bashrc

export PS1='[\u@\h \w] '

tcsh есть электронное руководство (только его страница руководства ) с разделом о переменных среды приглашения . Добавьте следующую строку в ваш ~/.tcshrc

set prompt='[%n@%m %~] '

zsh есть руководство пользователя с простым руководством к подсказкам, а также руководство с очень подробным справочником по расширению подсказок. Добавьте следующую строку в ваш ~/.zshrc

export PS1='[%n@%m %~] '
6

Баш не единственная оболочка.

Ваша проблема может заключаться в том, что у вас нет .profile или .bashrc, который устанавливает PS1, или в том, что ваша оболочка входа вообще не является bash.

Bash использует gnu readline для таких вещей, как завершение табуляции. Это сложная тема, и readline даже имеет собственный конфигурационный файл для каждого пользователя.

Смотрите man bash , man sh и man 3 readline . Баш отвечает на --version . Во многих системах linux /bin/sh самом деле не bash, а обычно урезанная версия ash .

4

Я думаю, вы не используете bash, но sh и ваше приглашение не настроено должным образом (если это возможно даже с sh).

вы можете получить текущую оболочку, набрав: echo $SHELL

если вы хотите запустить bash, просто введите bash

2

Вам необходимо установить переменную с именем PS1 в одном из ваших сценариев входа в систему, например /etc /profile или ~ /.bashrc. Это будет зависеть от вашего распространения.

Пример: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .