Bash:更新文件,并在.bashrc中引用它

时间:2019-04-22 15:14:28

标签: bash file

我目前正在托管一个Github项目,该项目会修改〜/ .bashrc文件。随着项目的不断更新,我将需要知道如何更新〜/ .bashrc文件而不完全破坏它。出于礼貌,为了避免混淆,我所做的更改始于

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

并以

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

不太确定该如何处理吗,想法?

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

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

这完美地解决了我的问题。

1 个答案:

答案 0 :(得分:2)

解决方案: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 Shell中不起作用。但是所有的现代贝壳都包括小贝壳,例如Almquist Shell支持它。在macOS上,它也可以正常工作,但解析为/Users/...