以root用户身份在cloud-init脚本中为其他用户安装oh-my-zsh

科里·科尔

我正在尝试使用为ubuntu用户安装oh-my-zsh引导我的AWS EC2 ubuntu服务器。我有一个cloud-init脚本(在此处了解更多信息),以root用户身份运行(使用sudo)。因此,在我的脚本中,我以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's后运行与ubuntu用户相同的命令,则颜色可以正常工作:

在此处输入图片说明

问题似乎出在cloud-init脚本运行echo命令时如何评估颜色,而ubuntu用户运行echo命令时如何评估颜色有谁知道我将如何更改PROMPT颜色以便仅~/.zshrc在ubuntu用户撤消一次后撤消颜色

科里·科尔

在这里感谢jgshawkey的回答解决了这个问题我使用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

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Windows中为其他用户安装软件

由于缺少zsh,因此无法以root或用户身份登录

如何为用户设置默认的 .zshrc (oh-my-zsh)?

无法以其他用户身份安装Elasticsearch

以Excel中的其他用户身份控制IE

如何以其他用户身份在脚本中运行命令?

使用此处文档以其他用户身份在脚本中运行命令

在当前会话中如何以其他用户身份运行脚本

如何使用Oh-My-Zsh在NixOS中安装Google Cloud完成?

如何在终端(oh-my-zsh)中显示git用户

在Cent OS安装中授予其他用户root特权?

如何以root用户身份访问其他用户的AWS Lambda测试事件?

在Linux中以root用户身份登录后如何向其他用户授予权限?

Mac OS X上的多个管理员用户上的Brew + Zsh + Oh My Zsh的正确设置是什么?

删除oh-my-zsh

将超级用户中安装的软件访问给其他用户

提供用于以其他用户身份在另一个脚本中运行脚本的密码

我可以使用pip install为其他用户安装模块吗?

用户似乎以其他用户身份登录

sudo su给其他用户运行脚本

来自其他用户的运行脚本

在其他用户上安装PFX证书

如何为root用户以外的其他用户安装驱动器?

Azure自定义脚本扩展。以其他用户身份执行脚本

为其他用户创建任务Outlook帐户

如何设置以root用户身份创建的文件和目录可以以其他用户身份读取和执行?

unix进程以root身份运行,即使从其他用户启动也是如此

如何以其他用户身份ssh,更改组并在Perl中运行脚本

在Android中以其他用户身份登录时编辑分析用户信息