Вы всегда pwdможете напечатать имя текущего рабочего каталога. И вы говорите, что Tab-завершение тоже не работает? (На некоторых машинах, которые я использую, я получаю это короткое приглашение, только если я вхожу в систему как root, и я с радостью оставляю это как хорошее предупреждение. Поскольку редко, если когда-либо, нужно войти в систему как root: вы не используете root , ты?)
Арьян
Алекс, расскажи нам, какой дистрибутив ты используешь?
инвертировать
Я использую Ubuntu.
Alex
Последний Ubuntu? И вы говорите, что Tab-завершение тоже не работает?
Арьян
Похоже, вы задаете два вопроса: почему не вкладка автоматически заполняет путь, и почему подсказка просто знак доллара вместо [user @ host path]. Немного сложно проголосовать за ответы, так как никто не отвечает на оба.
Джозеф Холстен
Ответы:
27
Поскольку вы задаете два вопроса, я отвечу на оба.
Почему не вкладки автозаполнения пути к файлам?
Потому что ваша оболочка либо не поддерживает ее, либо завершение табуляции не включено.
Чтобы решить эту проблему, вам сначала нужно узнать, какова ваша оболочка. На машине, ракушка которой тебе нравится, беги
echo $SHELL
Вы можете увидеть общее /bin/bash, или что-то менее общее, как /bin/tcsh, /bin/zshили что-то еще полностью.
Теперь вы можете изменить свою оболочку на машине с Ubuntu. На этом компьютере сначала убедитесь, что необходимая оболочка существует. Поскольку оболочка может находиться не на том же месте на компьютере с Ubuntu, как на другом компьютере, проверьте расположение, набрав
which bash
Это даст вам путь оболочки вы хотите, что - то вроде /bin/bash, /usr/bin/bashили /usr/local/bin/bash. Конечно, если вы хотите оболочку, кроме Баша, вы будете говорить which tcsh, which zshили аналогичные.
Если вы не видите путь, но вместо этого видите bash not found, то вам нужно установить соответствующий пакет и снова использовать, whichчтобы узнать, где была установлена оболочка.
Используя путь выбранной вами оболочки, вы можете, наконец, изменить свою оболочку, запустив
chsh -s /bin/bash
замена /bin/bashна любой подходящий путь для вашей оболочки по выбору.
Почему вместо [user @ host path] отображается знак доллара?
Из - за ваше быстрое переменное окружение $PS1, $PS2и так далее. Эти вещи не всегда переносимы между оболочками, поэтому вот несколько ссылок для вероятных кандидатов:
Ваша проблема может заключаться в том, что у вас нет .profile или .bashrc, который устанавливает PS1, или в том, что ваша оболочка входа в систему вообще не является bash.
Bash использует gnu readlineдля таких вещей, как завершение вкладки. Это сложная тема, и readline даже имеет собственный конфигурационный файл для каждого пользователя.
См man bash, man shи man 3 readline. Баш отвечает на --version. Во многих системах Linux /bin/shэто не bash, а обычно ограниченная версия ash.
не dashвместо ash? я думал, что прочитал что-то вроде этого
knittl
2
+1 за отсутствие .profile или .bashrc - если Алекс изначально не настроил свою учетную запись при установке Ubuntu, то по умолчанию новые пользователи не имеют .bashrc / не имеют PS1.
Кори Пластек
4
я думаю, вы не используете bash, но sh и ваше приглашение не настроено должным образом (если это возможно даже с sh).
вы можете получить текущую оболочку, набрав: echo $SHELL
если вы хотите запустить bash, просто наберите bash
Вы можете установить подсказку с другими оболочками. Там не называется оболочка sh. Echoing $SHELLнапечатает переменную окружения с именем SHELL. Эта переменная окружения просто указывает на оболочку и устанавливается только bash. Приблизительно бесполезно определять, какая оболочка запущена, поскольку лишь слабо указывает на то, что какой-то родительский элемент текущего процесса мог быть bash.
DigitalRoss
хорошо, имя программы оболочки - sh (в / bin / sh). и да, echo $ SHELL напечатает переменную SHELL, которая обычно устанавливается.
Knittl
У каждой системы Unix есть исполняемый файл с именем /bin/sh, да. Но я не знаю ни одной оболочки, которую зовут sh. Я могу думать ash, ksh, csh, bash, zsh, и tcsh. Первый - это обычный / bin / sh в Linux и NetBSD, последний - обычная оболочка FreeBSD, а остальные - необязательные оболочки. Многие окружения рабочего стола изменяют оболочку входа пользователей на bash, оставляя / bin / sh как ash.
DigitalRoss
2
@DigitalRoss sh- оболочка Борна. en.wikipedia.org/wiki/Bourne_shell Некоторые системы (Solaris) все еще поставляются с версией оболочки Bourne, которая не является просто копией одной из повторных реализаций (ash, dash, bash, ksh, zsh).
Крис Джонсен
... и bash известен как "оболочка Bourne again", которая унаследовала некоторые функции от оболочки Bourne, csh и ksh.
инвертировать
2
Вам необходимо установить переменную с именем PS1 в одном из ваших сценариев входа в систему, например / etc / profile или ~ / .bashrc. Это будет зависеть от вашего распространения.
pwd
можете напечатать имя текущего рабочего каталога. И вы говорите, что Tab-завершение тоже не работает? (На некоторых машинах, которые я использую, я получаю это короткое приглашение, только если я вхожу в систему как root, и я с радостью оставляю это как хорошее предупреждение. Поскольку редко, если когда-либо, нужно войти в систему как root: вы не используете root , ты?)Ответы:
Поскольку вы задаете два вопроса, я отвечу на оба.
Почему не вкладки автозаполнения пути к файлам?
Потому что ваша оболочка либо не поддерживает ее, либо завершение табуляции не включено.
Чтобы решить эту проблему, вам сначала нужно узнать, какова ваша оболочка. На машине, ракушка которой тебе нравится, беги
Вы можете увидеть общее
/bin/bash
, или что-то менее общее, как/bin/tcsh
,/bin/zsh
или что-то еще полностью.Теперь вы можете изменить свою оболочку на машине с Ubuntu. На этом компьютере сначала убедитесь, что необходимая оболочка существует. Поскольку оболочка может находиться не на том же месте на компьютере с Ubuntu, как на другом компьютере, проверьте расположение, набрав
Это даст вам путь оболочки вы хотите, что - то вроде
/bin/bash
,/usr/bin/bash
или/usr/local/bin/bash
. Конечно, если вы хотите оболочку, кроме Баша, вы будете говоритьwhich tcsh
,which zsh
или аналогичные.Если вы не видите путь, но вместо этого видите
bash not found
, то вам нужно установить соответствующий пакет и снова использовать,which
чтобы узнать, где была установлена оболочка.Используя путь выбранной вами оболочки, вы можете, наконец, изменить свою оболочку, запустив
замена
/bin/bash
на любой подходящий путь для вашей оболочки по выбору.Почему вместо [user @ host path] отображается знак доллара?
Из - за ваше быстрое переменное окружение
$PS1
,$PS2
и так далее. Эти вещи не всегда переносимы между оболочками, поэтому вот несколько ссылок для вероятных кандидатов:bash
содержит обширное руководство со страницами, посвященными переменным Bash (включаяPS1
& c) и « Печать приглашения» (в котором описаноPROMPT_COMMAND
длинное имяPS1
). Добавьте следующую строку в ваш~/.bashrc
tcsh
есть электронное руководство (только его справочная страница) с разделом о переменных среды подсказки . Добавьте следующую строку в ваш~/.tcshrc
zsh
имеет руководство пользователя с простым руководством к подсказкам , а также руководство с очень подробным справочником по расширению подсказок . Добавьте следующую строку в ваш~/.zshrc
источник
Баш не единственная оболочка.
Ваша проблема может заключаться в том, что у вас нет .profile или .bashrc, который устанавливает PS1, или в том, что ваша оболочка входа в систему вообще не является bash.
Bash использует
gnu readline
для таких вещей, как завершение вкладки. Это сложная тема, и readline даже имеет собственный конфигурационный файл для каждого пользователя.См
man bash
,man sh
иman 3 readline
. Баш отвечает на--version
. Во многих системах Linux/bin/sh
это не bash, а обычно ограниченная версияash
.источник
dash
вместоash
? я думал, что прочитал что-то вроде этогоя думаю, вы не используете bash, но sh и ваше приглашение не настроено должным образом (если это возможно даже с sh).
вы можете получить текущую оболочку, набрав:
echo $SHELL
если вы хотите запустить bash, просто наберите
bash
источник
sh
. Echoing$SHELL
напечатает переменную окружения с именемSHELL
. Эта переменная окружения просто указывает на оболочку и устанавливается только bash. Приблизительно бесполезно определять, какая оболочка запущена, поскольку лишь слабо указывает на то, что какой-то родительский элемент текущего процесса мог быть bash./bin/sh
, да. Но я не знаю ни одной оболочки, которую зовутsh
. Я могу думатьash
,ksh
,csh
,bash
,zsh
, иtcsh
. Первый - это обычный / bin / sh в Linux и NetBSD, последний - обычная оболочка FreeBSD, а остальные - необязательные оболочки. Многие окружения рабочего стола изменяют оболочку входа пользователей на bash, оставляя / bin / sh как ash.sh
- оболочка Борна. en.wikipedia.org/wiki/Bourne_shell Некоторые системы (Solaris) все еще поставляются с версией оболочки Bourne, которая не является просто копией одной из повторных реализаций (ash, dash, bash, ksh, zsh).Вам необходимо установить переменную с именем PS1 в одном из ваших сценариев входа в систему, например / etc / profile или ~ / .bashrc. Это будет зависеть от вашего распространения.
Пример: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
источник