Kar*_*aru 11 linux script bsd shell
我有一个相当广泛的 dotfiles 选择,这些文件在 git repo 中保存了最长时间 - 我只是为 bsd-isms 维护一个单独的代码分支(例如,在 Linux 上,为了获得彩色的 ls 输出ls --color=auto,但是在类似 BSD 的系统上,包括 Mac OS,它是ls -g)。
这已经开始变得笨拙,因为我必须进行更改,然后在每次触摸我的 shell 的 rc 文件时合并分支并处理冲突解决方案。解决这个问题的正确方法是删除 git 分支,然后让我的 rc 文件确定它在哪种操作系统上,然后为别名提供适当的插件脚本。
问题是,我不知道该怎么做。
如何从脚本或 shell rc 文件中判断我是在 Linux 还是 BSD 上?
uname从那以后就不会真正起作用了,我必须为那里的各种系统编写一堆逻辑。当我对操作系统的底层类型更感兴趣时,Mac 会说 Darwin、FreeBSD 等,因为这会影响我正在处理的特定工具集。对于上面的示例,我使用的是 bsdls还是 GNU ls?
Joh*_*sin 15
这堆栈溢出答案由尼古拉斯Martyanoff提供了一个完整的解决方案。我调整了它以使用评论中提到的较新的语法。
确定操作系统:
platform='unknown'
unamestr=$(uname)
if [ "$unamestr" = 'Linux' ]; then
platform='linux'
elif [ "$unamestr" = 'FreeBSD' ]; then
platform='freebsd'
fi
Run Code Online (Sandbox Code Playgroud)
为 选择正确的标志ls:
if [ "$platform" = 'linux' ]; then
alias ls='ls --color=auto'
elif [ "$platform" = 'freebsd' ]; then
alias ls='ls -G'
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2848 次 |
| 最近记录: |