gpt4 book ai didi

bash - 在 cloud-init 脚本中以 root 身份为不同的用户安装 oh-my-zsh

转载 作者:行者123 更新时间:2023-12-04 18:28:59 25 4
gpt4 key购买 nike

我正在尝试使用为 ubuntu 用户安装的 oh-my-zsh 引导我的 AWS EC2 ubuntu 服务器。我有一个以 root 用户身份(使用 sudo)运行的 cloud-init 脚本(更多信息 here)。因此,在我的脚本中,我以 ubuntu 用户身份运行 oh-my-zsh 安装。

#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]~

如果我运行相同的 PROMPT在 ssh'ing 后以 ubuntu 用户身份执行命令,颜色正常工作:

enter image description here

问题似乎是当 cloud-init 脚本运行 echo 时如何评估颜色。命令与 ubuntu 用户运行 echo 时如何评估颜色命令。有谁知道我如何更改 PROMPT所以颜色只评估一次 ~/.zshrc由 ubuntu 用户评估?

最佳答案

感谢 jgshawkey 的回答 here,我解决了这个问题.我使用 bash 变量来转义颜色代码和命令以推迟它们的评估:

  - apt-get install -y zsh
- runuser -l ubuntu -c 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/coreycole/oh-my-zsh/master/tools/install.sh)"'
- chsh -s $(which zsh) ubuntu
- fgGreen='%{$fg[green]%}'
- fgCyan='%{$fg[cyan]%}'
- fgReset='%{$reset_color%}'
- retStatus='${ret_status}'
- gitInfo='$(git_prompt_info)'
- runuser -l ubuntu -c "echo export PROMPT=\''${fgGreen}%n@%m${fgReset} ${retStatus} ${fgCyan}%c${fgReset} ${gitInfo}'\'" >> /home/ubuntu/.zshrc
- echo "source ~/.profile" >> /home/ubuntu/.zshrc

它最终在我的 ~/.zshrc 中看起来像这样:

enter image description here

关于bash - 在 cloud-init 脚本中以 root 身份为不同的用户安装 oh-my-zsh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52415887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com