Я пытаюсь загрузить сервер Ubuntu AWS EC2 с установленным oh-my-zsh для пользователя ubuntu.У меня есть скрипт cloud-init (подробнее здесь ), который запускается от имени пользователя root (с помощью sudo).Итак, в моем скрипте я запускаю установку oh-my-zsh от имени пользователя ubuntu.
#cloud-config
runcmd:
# omitted other commands specific to my server, install zsh at the end
- apt-get install -y zsh
- su ubuntu -c 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/coreycole/oh-my-zsh/master/tools/install.sh)"'
- chsh -s $(which zsh) ubuntu
# change the prompt to include the server hostname
- su ubuntu -c echo "echo export PROMPT=\''%{$fg[green]%}%n@%{$fg[green]%}%m%{$reset_color%} ${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'\'" >> /home/ubuntu/.zshrc
# get environment variables defined above
- echo "source ~/.profile" >> /home/ubuntu/.zshrc
Когда cloud-init заканчивается, и я ssh в цвета не работают в $PROMPT
, ясм. [green]
и [cyan]
:
[green]ubuntu@[green]ip-172-31-27-24 [cyan]~
Если после выполнения команды ssh я запускаю ту же команду PROMPT
, что и для пользователя ubuntu, цвета работают правильно:
Похоже, проблема заключается в том, как цвета оцениваются, когда скрипт cloud-init запускает команду echo
, по сравнению с тем, как цвета вычисляются, когда пользователь ubuntu запускает echo
команда.Кто-нибудь знает, как я могу изменить PROMPT
, чтобы цвета оценивались только после того, как пользователь ubuntu оценил ~/.zshrc
?