如果您只关心实际执行的文件,例如.bash_profiles和friends,则可以使用eg uname来区分基于代码运行的系统。
例如,如果您当前使用的是Linux,则完全未经测试,并且警告我没有OS X可以尝试:
alias ll='ls -lFA'
在Mac OS X上:
alias ll='ls -lFAx'
(在默认情况下,-xOS X会ls执行GNU ls所做的事情),然后可以将它们组合成如下形式:
OS="$(uname -s)"
if test "$OS" = "Darwin"; then
alias ll='ls -lFAx'
# ...other OS X-specific things go here...
else if test "$OS" = "Linux"; then
alias ll='ls -lFA'
# ...other Linux-specific things go here...
fi
# ...generic things go here...
然后,唯一的要求是uname -s在大致相同的方式工作(它应该,因为这两个系统都合理POSIX-γ和uname -S命令由POSIX要求(感谢马可为指出这点)),并且该语法shell脚本分支基于字符串的比较是相同的。您可能还可以根据其他条件进行测试。例如,您可以查找/ etc / lsb_release,检查/ proc / sys / kernel / ostype是否包含“ Linux”,或者可以进行其他任何测试。