【问题标题】:Bash: Update file, and reference it in .bashrcBash:更新文件,并在 .bashrc 中引用
【发布时间】:2019-09-11 18:42:23
【问题描述】:

我目前正在托管一个修改 ~/.bashrc 文件的 Github 项目。随着项目的不断更新,我需要知道如何在不完全破坏它的情况下更新 ~/.bashrc 文件。出于礼貌和防止混淆,我所做的更改以

########## Added by Bash-Shortcuts ##########

并以

结尾
######### End. https://github.com/OoLunar/Bash-Shortcuts/ ##########

不太清楚该怎么做,想法?

编辑: 我最终使用了@reichhart 的答案,并添加了以下内容:

test -r ~/.Bash-Shortcuts/.commandsrc && . ~/.Bash-Shortcuts/.commandsrc

这完美解决了我的问题。

【问题讨论】:

  • 不是问题的直接答案,但为什么不使用source 将新命令添加到您的 .bashrc 文件?
  • 我什至不知道。老实说,我认为源只是将配置重新加载到系统的东西......我会进一步研究。
  • 看看sed
  • @reichhart,是否可以通过 .bashrc 引用另一个配置?我正在添加命令供用户使用,而不是为其他方式编辑 .bashrc。

标签: bash file


【解决方案1】:

解决方法:sed 或其他就地进程

这里可能出现的问题:修改 .bashrc 的进程可能会崩溃,然后 .bashrc 可能会被破坏。

更好的解决方法:source 一个外部文件。

假设:应用程序名为myapplication,它以用户user123 运行。主目录位于/home 下方,例如Linux(macOS:/Users)。

  1. 创建文件~user123/.myapplicationrc(解析为/home/user123/.myapplicationrc)。将应用程序的所有命令/配置放在这里。使其至少对user123 可读(不需要执行位)。
  2. 将此行添加到~user123/.bashrc(是/home/user123/.bashrc)——最好在文件末尾:test -r ~/.myapplicationrc && . ~/.myapplicationrc (一个点、一个空格,然后是文件名。)
  3. 可选:在您的安装代码中检查.bashrc 中是否已存在该行,如果缺少则添加:fgrep -q .myapplicationrc ~user123/.bashrc || echo 'test -r ~/.myapplicationrc && . ~/.myapplicationrc' >>~user123/.bashrc

更多详情:Replacement for source in sh

编辑:使用~ 而不是/home/...。这种“波浪扩展”不适用于较旧的 Bourne 或 Heirloom Shells。但是所有现代贝壳,包括小贝壳,例如Almquist Shell 支持它。在 macOS 上它也可以正常工作,但解析为 /Users/...

【讨论】:

  • 在第 2 步中,我建议使用 [ -e "$HOME/.myapplicationrc" ] && . "$HOME/.myapplicationrc" - 这样它就没有硬编码的路径,如果有人在那里删除它就会彻底失败。 myapplicationrc 文件。
  • 它的目的是使用PATHHOME作为依赖,因为我对应用程序一无所知。在我手头的一些服务器上,例如环境减少的应用程序(例如env -i)。但我会接受你的建议,我会添加test -r 作为支票。赞成您的评论。谢谢。
  • @reichhart 嗯,我还担心文件(和主目录)会被移动和重命名,并且喜欢写东西,因此它们对 那个 是健壮的。折衷方案如何:bash(但不是所有其他 shell)将扩展 ~ 到主路径,即使 $HOME 未定义(尝试 env -i bash -c 'echo ~'),所以 test -r ~/. myapplicationrc && . ~/myapplicationrc 在这两种情况下都应该工作。跨度>
猜你喜欢
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 2016-10-15
  • 1970-01-01
  • 2021-12-16
  • 2019-09-07
  • 2015-07-29
相关资源
最近更新 更多