在云环境中管理 bash rc 的工作流程

在云环境中管理 bash rc 的工作流程

我之前没有在我的云服务器上编辑过 bashrc。服务器更改太频繁,这似乎不值得。我也不想将我的本地 bashrc 上传到每个云服务器,因为我的本地 bashrc 中有很多东西只对我的本地机器有意义。但我有一些特定的别名等,我想在我的所有云服务器上都有。我可以想到几种方法来管理它:

  1. 为云服务器编写一个 bashrc,然后始终用这个替换默认的 bashrc。缺点:如果我启动具有不同操作系统且具有不同 bashrc 的服务器,上传时我会覆盖其内容吗?
  2. 我使用我的别名等创建一个单独的文件,并将其上传到我的服务器,然后在现有 bashrc 的末尾添加一行来获取此附加文件。缺点:需要多花点功夫。
  3. 每次启动新服务器时,只需复制粘贴即可。缺点:费力。

有人有好的解决方案或建议吗?谢谢。

答案1

这是我的设置(初始开销高,后续工作量低)

  1. 创建一个 git repo 来存储您的配置文件,并编写一个小的安装脚本来安装它们。

    例如,你可以将你的仓库克隆到,~/src/my_config然后安装脚本将覆盖(或符号链接)~/.bashrc~/src/my_config/.bashrc

    这使得在新环境中工作变得非常简单:你只需要

    git clone $repo_url
    ./my_config/install.sh
    

    这并不完全正确:在远程机器上,您还需要ssh-keygen将新的公钥添加到您的 git 主机上的帐户。

  2. 创建一个~/.bash.d目录。将其添加到你的 .bashrc 中

    for file in ~/.bash.d/*.bash; do
        if [[ -r "$file" ]]; then
            . "$file"
        fi
    done
    

    这样你就可以将诸如定义提示符之类的内容放入单独的文件中:~/.bash.d/prompt.bash。我喜欢这样让 .bashrc 保持较小,因为我在交互式 shell 中使用了大量函数。

  3. 为每个环境创建一个~/.bash.d/$(hostname)目录。将其添加到你的 .bashrc 中

    for file in ~/.bash.d/$(hostname)/*.bash; do
        if [[ -r "$file" ]]; then
            . "$file"
        fi
    done
    

    所有严格属于特定机器本地的东西都可以被隔离。

    符号链接在这里工作良好:如果您的所有 AWS 服务器都使用相同的设置,那么您可以创建~/.bash.d/AWS并将所有特定主机名符号链接到它。

这个系统对我来说非常好用。我添加一些新内容,将更改推送到 git,然后在远程系统上通过 git pull 获取新代码。


相关内容