【问题标题】:OS X's bash script can't use --color=autoOS X 的 bash 脚本不能使用 --color=auto
【发布时间】:2017-02-07 02:57:46
【问题描述】:

我是 OS X 和其他 Linux 发行版(Ubuntu、CentOS、RHEL)的新手。

我想知道为什么 OS X 的 bash 不能使用--color=auto 选项以及如何启用它。

我经常使用ls --color=auto,但在 OS X 上,它不起作用。以下是命令输出:

$ ls --color=auto
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

我还阅读了ls 的手册页,发现ls -G 是彩色输出的推动者。 所以,这个时候,没关系,但我有点烦,因为我正在为我所有的 linux 环境共享 .bashrc.bash_profile

有人知道这些 bash 的不同之处吗?您有什么好主意可以在 OS X 和一些 linux 发行版之间共享 .bashrc.bash_profile,而无需对每个环境进行额外的编辑。

附: 我的朋友告诉我 bash on AIX(Linux 服务器 IBM 版本?我不确定)也无法运行 ls --color=auto

【问题讨论】:

  • This answer 使用操作系统检测来别名颜色ls
  • macOS 上的 ls 不是 bash,它是来自 BSD UNIX 的衍生命令。
  • @teppic 我也用 ls 别名,但不知道$platform 变量,谢谢!
  • @clearlight 我尝试运行ps -p $$ 并得到47232 ttys000 0:00.45 -bash,但你的意思是它不是 bash 本身,它是来自那里的命令?!谢谢你给我一个线索,我会搜索并检查它。

标签: linux bash macos shell


【解决方案1】:

ls 命令的实现与pstop 等其他命令不同,大多数工具都有GNU 版本和BSD 版本。 Linux 采用 GNU 版本,而 OSX 可能采用 BSD 版本,因此这些命令的选项可能会有所不同。

如果你想让.bashrc.bash_profile 在任何地方都能工作,你应该在给你的命令起别名之前判断环境:

_myos="$(uname)"

case $_myos in
  Linux) alias ls='ls --color';;
  Darwin) alias ls='ls -G';;
  *) ;;
esac

【讨论】:

  • 感谢您的回答。我运行了命令,它说Darwin!我会为我的.bashrc 添加这个。谢谢。
  • 所以基本上是@teppic提供的链接上答案的变体,作为对问题的第一条评论回复。
【解决方案2】:

使用homebrew安装GNU coreutils

brew install coreutils
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"

有用链接:https://github.com/sorin-ionescu/prezto/issues/966

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2016-11-25
    • 2011-09-27
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多