Надлежащее место для помещения приглашения оболочки (PS1), когда использование sh/bash/zsh вместе

Возможно, взгляните на libtermkey, терминальная ключевая входная библиотека, которая распознает специальные ключи (такие как клавиши со стрелками и функциональные клавиши), включая "измененные" ключи как Ctrl-Left.

Другая опция могла бы состоять в том, чтобы улучшить функциональность очарования, минимальной копии ncurses.

0
18.01.2013, 04:32
3 ответа

Каждая оболочка имеет свои собственные escape-последовательности для PS1, таким образом, необходимо установить его отдельно для каждой оболочки. Кроме того, PS1 только имеет смысл для интерактивных оболочек, он не используется другими программами. Таким образом помещенный PS1 в интерактивном файле запуска для Вашей оболочки:

  • ~/.bashrc для удара
  • ~/.kshrc для ksh
  • ~/.zshrc для zsh

Bash имеет причуду: это не загружается .bashrc в оболочке входа в систему это только загружается ~/.bash_profile или отсутствующий это ~/.profile. Для фиксации этого вставьте следующие строки Ваш ~/.bash_profile:

if [ -e ~/.profile ]; then . ~/.profile; fi
case $- in *i*) . ~/.bashrc;; esac

Для получения дополнительной информации о файлах настройки оболочки, посмотрите, что существует ли ".bashrc" эквивалентный файл, считанный всеми оболочками?.

4
28.01.2020, 02:21

Если Вы хотите ту же подсказку для всех оболочек и пользователей, то вставленный в него /etc/profile файл. Это получено всеми оболочками и является стандартным местом для определения PS1.

0
28.01.2020, 02:21
  • 1
    Или в ~/.profile, если это - всего один пользователь. –  Johan 18.01.2013, 07:59
  • 2
    @Johan - Вы правы, но su конкретно указывает, что это - многочисленные пользователи. –  jordanm 18.01.2013, 16:39
  • 3
    у меня все еще есть проблема установки на/etc/profile, 1. как к separtarte другому PS1 на другой оболочке. 2. Как проверить набор PS1 в человека, интерактивного только. –  Daniel YC Lin 19.01.2013, 10:44
[1129414] Одна вещь, которую вы можете сделать, это использовать обычно называемые vars для определения терминальных escapes, специфичных для каждой интерпретации оболочки в их собственном исходном скрипте, а затем собрать все это воедино в конце в одном запросе:[12135] И если одна оболочка, скорее всего, будет делать больше с запросом, чем другая, то просто файл [1129832].dot[1129833] sourcing [1129834].common_prompt[1129835] не должен быть концом. Так что если [1129836]zsh[1129837] будет делать больше обработки, чем [1129838] тире, например, [1129839] - [1129840], потому что он будет [1129841], то вы просто возьмете его оттуда: [12136]
0
28.01.2020, 02:21

Теги

Похожие вопросы