Bash:更新文件,并在.bashrc中引用它
我目前正在主持一个Github项目,该项目修改了~/.bashrc文件。随着项目不断更新,我需要知道如何更新~/.bashrc文件而不完全破坏它。作为一种常见的礼貌,为了避免混淆,我从Bash:更新文件,并在.bashrc中引用它,bash,file,Bash,File,我目前正在主持一个Github项目,该项目修改了~/.bashrc文件。随着项目不断更新,我需要知道如何更新~/.bashrc文件而不完全破坏它。作为一种常见的礼貌,为了避免混淆,我从 ########## Added by Bash-Shortcuts ########## 以 ######### End. https://github.com/OoLunar/Bash-Shortcuts/ ########## 不太清楚该怎么做,想法 编辑: 我最终使用了@reichhart的答案,并添
########## Added by Bash-Shortcuts ##########
以
######### End. https://github.com/OoLunar/Bash-Shortcuts/ ##########
不太清楚该怎么做,想法
编辑:
我最终使用了@reichhart的答案,并添加了一行:
test -r ~/.Bash-Shortcuts/.commandsrc && . ~/.Bash-Shortcuts/.commandsrc
这完美地解决了我的问题。解决方法:sed或其他就地流程 这里可能存在的问题是:修改.bashrc的进程可能会崩溃,然后.bashrc可能会被破坏 更好的解决方案方法:
源文件
外部文件。
假设:应用程序被称为myapplication
,它以用户user123
的身份运行。主目录位于/home
下方,例如Linux(macOS:/Users
)上的主目录
~user123/.myapplicationrc
(解析为/home/user123/.myapplicationrc
)。将应用程序的所有命令/配置放在此处。使其至少可读user123
(不需要执行位)~user123/.bashrc
(is/home/user123/.bashrc
)——最好在文件末尾:test-r~/.myapplicationrc&.~/。myapplicationrc
(一个点,一个空格,然后是文件名。).bashrc
中是否存在该行,如果出现错误,则添加该行:fgrep-q.myapplicationrc~user123/.bashrc | echo'test-r~/.myapplicationrc&.~/。myapplicationrc'>>~user123/.bashrc
编辑:使用
~
而不是/home/…
。这种“瓷砖扩展”在旧的伯恩或传家宝外壳中不起作用。但所有现代外壳(包括像Almquist Shell这样的小外壳)都支持它。在macOS上,它也可以正常工作,但解析为/Users/..
不是问题的直接答案,但为什么不使用source
向.bashrc文件添加新命令呢?我甚至不知道这一点。我真的认为源代码只是将配置重新加载到系统中的一件事。。。我将进一步了解详细信息。查看sed
。始终避免自动更改配置文件。这就是为什么您经常会发现/etrc/xxxx.d
目录作为配置目录,其中包含所有文件。在这里,您可以使用类似于.myapplicationrc
的内容,并从.bashrc中包含此内容。通过这样做,您只需从头开始创建.myapplicationrc
,而不会有破坏.bashrc
的风险。请参阅:在步骤2中,我建议使用[-e“$HOME/.myapplicationrc”]&&。“$HOME/.myapplicationrc”
——这样它就没有硬编码的路径,如果有人在那里删除,它将彻底失败。myapplicationrc文件。它不打算使用PATH
或HOME
作为依赖项,因为我对该应用程序一无所知。在我手头的一些服务器上,有一些应用程序具有简化的环境(例如env-I
)。但是我会接受你的建议,我会添加test-r
作为检查。对你的评论投了赞成票。谢谢。@reichhart嗯,我还担心文件(和主目录)会被移动和重命名,我喜欢写东西,这样它们就可以很好地抵御这种情况。折衷一下如何:bash(但不是所有其他shell)将扩展到主路径,即使没有定义$home
(尝试env-ibash-c'echo~”
),所以test-r~/。myapplicationrc&&~/myapplicationrc
应该在这两种情况下都能工作。