Невозможно передать переменную в приглашение 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))
решил проблему.
Надеюсь, поможет!