我有两台笔记本电脑 - 一台用于工作,一台用于个人用品。我的每个.bash_profile
都有很多相同的功能和别名。但是,我的笔记本电脑.bash_profile
上有一些东西在我的个人笔记本电脑上并不存在。
我想知道我是否有办法让他们共享"分享" .bash_profile
或其他内容,并将功能扩展到它,以便在笔记本电脑之间分享我的bash内容。
如果重要,我会使用Mac; bash --version == 4.4.19
答案 0 :(得分:3)
当然可以,使用.bash_profile
命令将source
分解为模块并不罕见。
从您的问题来看,您的.bash_profile
几乎完全相同,但唯一的区别是您的笔记本电脑上有特定工作的东西。解决问题的一种方法是将工作别名,函数,导出等移动到自己的文件中。我们称之为~/.work_profile
然后在~/.bash_profile
添加以下内容。
[[ -f ~/.work_profile ]] && source ~/.work_profile
解释:[[ -f ~/.work_profile ]]
测试常规文件~/.work_profile
是否存在,如果存在则返回true。
&& source ~/.work_profile
是合乎逻辑的。如果上一个命令返回true,那么它将运行此部分并获取您的~/.work_profile
。
答案 1 :(得分:1)
解决方案1:
.bash_profile
source ~/.bashrc.local
结束时.bash_profile
.bashrc.local
。解决方案2:在两台笔记本电脑上使用一个.bash_profile
。
... common stuff ...
if [[ -f /a/file/only/on/work/laptop ]]; then
... now on work laptop ...
else
... now on home laptop ...
fi
我有20多个Bash rc文件,所以我真正的解决方案有点复杂:
~/.bashrc_profile
中只有一行:
source ~/.bashrc
所有系统共享相同的~/.bashrc
,逻辑如下:
# Each system has its own `.bashrc.pre' which defines the
# var `$RC_DIR' for top dir of all rc files (Bash, Vim, ...).
#
# I need to define my own `$RC_DIR' because my coworkers share
# some servers (using the same accounts) at work.
source ~/.bashrc.pre
# `rcfiles' is system specific which lists rc files to be
# loaded on that system. I maintain a `rcfiles.template'.
for file in $(< $RC_DIR/bash/rcfiles); do
source $file
done
# `.bashrc.post' is system specific
source ~/.bashrc.post
答案 2 :(得分:-1)
如果您有root用户,可以在/ etc中使用配置文件,或者使用source filename
包含其他(通用)文件。
您可能还想查看解释不同可加载文件的this question。