Невозможно передать переменную в приглашение root bash перед входом в систему как суперпользователь

Я на самом деле на Mac под управлением OSX 10.9.5 Mavericks и использую iTerm2.

Как видно из названия, я установил мою подсказку bash следующим образом ~/.bash_profile и немного другой в /var/root/bashrc (единственное отличие - это цвет pwd), чтобы иметь разделительную линию перед новой командной строкой. Чтобы адаптировать его длину в случае, если я изменяю размер окна терминала (используя некоторые найденные направляющие), я создал новый prompt_command функция как показано:

prompt_command ()
{
((size=${COLUMNS}-9))
fill=""
while [ "$size" -gt "0" ]; do
fill="-${fill}"
((size=${size}-1))
done
}

PROMPT_COMMAND=prompt_command

PS1="\[\e[1;37m\]"'$fill \t\n'"\[\e[1;33;40m\]["'$(basename $(pwd))'"] $\[\e[0m\] "

Все работает нормально, за исключением того факта, что когда я вхожу в систему как su, мне нужно "дать другой возврат каретки" в терминал, чтобы сделать fill переменная печатается (или интерпретируется) правильно. Хорошо, я не очень хорошо объясняю, но я думаю, что этот скриншот будет проясняться (я не могу публиковать изображения, у меня всего 8/10 баллов, извините).

Может кто-нибудь помочь, пожалуйста?

1 ответ

Я решил это.

$COLUMNS является переменной оболочки, а не переменной среды, поэтому с помощью ((size=$(tput cols)-9)) вместо ((size=${COLUMNS}-9)) решил проблему.

Надеюсь, поможет!

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