Переменные Bash не загружаются правильно на запуске

Я редко отправляю вопрос, потому что я склонен быть одержимым попыткой понять вещи самостоятельно, но сегодня я действительно застреваю...., и у меня была долгая неделя, и мой мозг мертв...

так или иначе я пытаюсь загрузить var, который проводит горизонтальную прямую линию длина моей консоли.

Я попытался разграничить несколько путей:

'⎼' не является подчеркиванием, символ находится немного выше, чем подчеркивание т.е.: ⎼ _

  1. printf '⎼ $ .s' % (seq 1$COLUMNS)

  2. python3-c "печать (' ⎼' * $COLUMNS)"

обе команды разграничивают, и когда я присваиваю его var как: $ HORZLINE= (printf '⎼ $ .s' % (seq 1$COLUMNS)

и затем назовите $HORZLINE, он также разграничивает.

Я сталкиваюсь с проблемами, когда я пытаюсь добавить что строка ($ HORZLINE= (printf '⎼ $ .s' % (seq 1$COLUMNS)) к .bashrc и попытке загрузить его на запуске.

Загрузки var, но целая строка не загружается. Только один символ загружается. Таким образом, когда я пробую:

$: повторите-e "$HORZLINE" ⎼

ПОСЛЕ терминальных начальных загрузок, если я получаю .bashrc файл снова, переменные нагрузки правильно и провожу целую линию.

У кого-либо есть какие-либо идеи относительно того, что я делаю неправильно, или что продолжается?

**

ОБНОВЛЕНИЕ - РЕШЕННЫЙ

**

Я просто хотел дать Вам парней головы и обновить это для любого туда испытание той же проблемы..

Все, что я должен был сделать для решения проблемы, должно было включить force_color_prompt (не прокомментируйте это в .bashrc),

Вот снимок экрана моей подсказки, не загружающейся правильно: force_color_prompt commented out

и вот то, на что это, как предполагается, похоже: force_color_prompt enabled

Я чувствую себя настолько глупым. Я потратил так много времени, пробуя все эти разные вещи, когда я должен был просто посмотреть на bashrc.

Но именно так Вы знаете, я даже не думал о force_color_prompt, потому что терминал делал некоторые странные вещи, как: 1. если я запустил терминал помощника, подсказка, загруженная правильно 2. Я повторно запускаю xterm и НИЧТО 3. Бездельничавший с предпочтениями в xterm, измененном шрифт, запускают терминал снова, и он прекратил работать. НО если бы я возвратил шрифт к системному значению по умолчанию, то он работал бы снова.

Таким образом, я бездельничал с установкой xterm, которая, если у Вас был опыт с, не так легка.

Так или иначе.. вот именно.

Спасибо за всю Вашу справку.

1
задан 30 December 2019 в 07:14

4 ответа

Проблема - это даже когда checkwinsize установлен, $COLUMNS переменная не становится установленной до a SIGWINCH сигнал получен.

Я не уверен - ли это правильный способ сделать это, но это, кажется, работает на меня:

kill -s SIGWINCH $$
HORZLINE=$(printf '⎼%.s' $(seq 1 $COLUMNS))
echo "$HORZLINE"

[РЕДАКТИРОВАНИЕ: Вам не нужно -e с тех пор в строке нет никаких escape-последовательностей.]

0
ответ дан 4 January 2020 в 19:48

Из страницы справочника удара для СТОЛБЦОВ,
Automatically set if the checkwinsize option is enabled or in an interactive shell upon receipt of a SIGWINCH.
Вы устанавливали checkwinsize?, потому что .bashrc, вероятно, не вошел в интерактивную оболочку.

0
ответ дан 4 January 2020 в 19:48

как я добавил к своему вопросу, проблема была то, потому что у меня не было force_color_prompt включенным в .bashrc.

однажды я непрокомментированный строка, переменные, загруженные правильно.

0
ответ дан 4 January 2020 в 19:48

Это непосредственно не решает Вашу проблему, но в моем ~/.bashrc Я печатаю горизонтальную строку, промежуточную каждая команда:

terminal dividing line.png

Это выполняется путем установки $PS1 в ~/.bashrc:


Divider=""
for ((i=0; i<$COLUMNS; i++)) ; do
    Divider="$Divider""─"
done

if [ "$color_prompt" = yes ]; then
    PS1='${Divider}\n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${Divider}\n${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

unset color_prompt force_color_prompt

Примечание: если Вы изменяете ширину gnome-terminal окна необходимо снабдить .bashrc с командой . ~/.bashrc изменить размер разделительной линии в командной строке.

0
ответ дан 4 January 2020 в 19:48

Другие вопросы по тегам:

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