Почему запуск сценария cloud-init в EC2 меняет мою оболочку?
Вызов всех облачных инициаторов и гуру EC2...
Я не могу понять это. Я использую скрипт cloud-init для начальной загрузки экземпляра EC2 aws-ami (через AWS CloudFormation) и когда я включаю write_files
Это свойство изменяет командную строку в экземпляре на -bash-4.2$
, Если я не включаю write_files, я получаю обычную оболочку EC2.
Вот мой сценарий до сих пор:
#cloud-config
repo_update: true
repo_upgrade: all
packages:
- gcc
- git
- ruby24
- ruby24-devel
runcmd:
- update-alternatives --set ruby /usr/bin/ruby2.4
write_files:
- path: /home/ec2-user/some-file.yml
owner: root:root
permissions: '0644'
content: |
<<--SOME-CONTENT-->
final_message: 'The Build Server is ready!'
Кто-нибудь знает, почему это происходит или что я могу делать неправильно, заставляя cloud-init менять оболочку? Или, может быть, это ошибка / известная проблема с cloud-init? Это сводит меня с ума.
Я уже проверил логи /var/log/cloud-init.log
а также /var/log/cloud-init-output.log
и нет никаких ошибок или чего-либо, что могло бы предположить, что что-то пошло не так.
1 ответ
Я понял это, что-то в cloud-init не устанавливало переменную $PS1
поэтому встроенный по умолчанию \s-\v\$
используется.
Я исправил это, загрузив измененный ~/.bashrc
файл.
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
parse_git_branch() {
if ! git rev-parse --git-dir > /dev/null 2>&1; then
return 0
fi
git_branch=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
echo "[$git_branch]"
}
PS1="${debian_chroot:+($debian_chroot)}\[\033[38;5;39m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\[\033[38;5;118m\]\$(parse_git_branch)\[\033[00m\]$ "