如何创建在Linux和OSX上都能工作的.bashrc文件

如何创建在Linux和OSX上都能工作的.bashrc文件,linux,macos,bash,ubuntu,Linux,Macos,Bash,Ubuntu,我发现某些功能和程序在一个系统上可用,但在另一个系统上不可用。 如何让我的.bashrc文件处理这些差异,从而使我的.bashrc文件真正可移植 类似地,如何在新机器上立即放置自定义的.bashrc文件,而不必首先满足其所有依赖项?拥有一个不起作用的.bashrc文件很难,因为你甚至不能打开终端窗口。。。(在编辑我的.bashrc文件时,我总是打开一个并测试一个新的终端窗口!如果您以这种方式“卡住”,您可以使用像gedit这样的纯文本编辑器来更改它)以下是三种方法: 如果命令依赖于环境变量,如b

我发现某些功能和程序在一个系统上可用,但在另一个系统上不可用。
如何让我的
.bashrc
文件处理这些差异,从而使我的
.bashrc
文件真正可移植


类似地,如何在新机器上立即放置自定义的
.bashrc
文件,而不必首先满足其所有依赖项?拥有一个不起作用的.bashrc文件很难,因为你甚至不能打开终端窗口。。。(在编辑我的
.bashrc
文件时,我总是打开一个并测试一个新的终端窗口!如果您以这种方式“卡住”,您可以使用像gedit这样的纯文本编辑器来更改它)

以下是三种方法:

如果命令依赖于环境变量,如bash之类的程序版本或$TMUX之类的变量,则可以在
~.bashrc
文件中使用这些变量:

[ "${BASH_VERSINFO[0]}" -ge 4 ] && shopt -s autocd
[ -z "$TMUX" ] && export TERM=xterm-256color
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi 

#(or)
[[ -s ~/.git-completion.bash ]] && source ~/.git-completion
如果
.bashrc
命令依赖于存在的文件,例如
~/.git completion.bash
文件:

[ "${BASH_VERSINFO[0]}" -ge 4 ] && shopt -s autocd
[ -z "$TMUX" ] && export TERM=xterm-256color
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi 

#(or)
[[ -s ~/.git-completion.bash ]] && source ~/.git-completion
如果命令取决于正在安装的程序,如tmux:

if which tmux >/dev/null; then
  export TERM=xterm-256color
fi

我觉得这个问题太宽泛了,不要那样做。在每个系统上单独设置一个
.bashrc
(这可能是
源代码
中的一些常见部分)。我很乐意将您的方法列表作为一篇稍微扩展的博文。但这不是问答的最佳选择。@Basile-让它们与频繁的更改保持同步是一个很大的难题。不,你只需要使用版本控制系统(就像任何源代码一样),例如,来管理这些源文件。所有好的方法,虽然没有特定于Linux和OS X的内容,但您缺少了两个平台之间关键区别的方法:。