在 macOS 12.x 上安装最新的 bash
installing latest bash on macos 12.x
我正在尝试 cp
命令 运行 在 ubuntu 20 下可以正常工作,即
(base) jr@Historys-MacBook-Air test % cp --backup=numbered src dest
cp: illegal option -- -
这让我觉得很奇怪,所以查看我看到的手册页
HISTORY
A cp command appeared in Version 1 AT&T UNIX.
macOS 12.0 February 23, 2005
我认为 shell 可能是罪魁祸首 - 我发现我在 zsh
(base) jr@Historys-MacBook-Air test % echo [=14=]
-zsh
当我在 bash 中启动终端时,它是一个旧版本:
(base) jr@Historys-MacBook-Air test % /bin/bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin21)
Copyright (C) 2007 Free Software Foundation, Inc.
所以我尝试 brew install
最新的,然后 chsh 到它但是得到了 'non-standard shell':
...
==> Pouring bash--5.1.16.arm64_monterey.bottle.tar.gz
/opt/homebrew/Cellar/bash/5.1.16: 157 files, 11.5MB
(base) jr@Historys-MacBook-Air test % /opt/homebrew/Cellar/bash/5.1.16/bin/bash --version
GNU bash, version 5.1.16(1)-release (aarch64-apple-darwin21.1.0)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
(base) jr@Historys-MacBook-Air test % chsh -s /opt/homebrew/Cellar/bash/5.1.16/bin/bash
Changing shell for jr.
Password for jr:
chsh: /opt/homebrew/Cellar/bash/5.1.16/bin/bash: non-standard shell
任何人都可以指出如何 a. 运行 5.1.16 bash and/or b.在 mac os12 上使用 cp --backup=numbered
(and/or c. 权衡 bash 版本是否破坏了我的 cp 命令?)
回答你的三个问题:
- 将
/opt/homebrew/Cellar/bash/5.1.16/bin/bash
(或者更好,opt/local/bin/bash
这是它的符号链接)添加到 /etc/shells
- macOS 附带的
cp
版本与 GNU 版本不同。它缺少 --backup=numbered
选项。您需要从 Homebrew
安装 GNU Coreutils
以获得您想要的行为。 GNU cp
命令将以 g
作为 GNU cp
. 的 gcp
前缀
bash
和 zsh
版本都与 cp
命令的选项或行为没有任何关系。
我正在尝试 cp
命令 运行 在 ubuntu 20 下可以正常工作,即
(base) jr@Historys-MacBook-Air test % cp --backup=numbered src dest
cp: illegal option -- -
这让我觉得很奇怪,所以查看我看到的手册页
HISTORY
A cp command appeared in Version 1 AT&T UNIX.
macOS 12.0 February 23, 2005
我认为 shell 可能是罪魁祸首 - 我发现我在 zsh
(base) jr@Historys-MacBook-Air test % echo [=14=]
-zsh
当我在 bash 中启动终端时,它是一个旧版本:
(base) jr@Historys-MacBook-Air test % /bin/bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin21)
Copyright (C) 2007 Free Software Foundation, Inc.
所以我尝试 brew install
最新的,然后 chsh 到它但是得到了 'non-standard shell':
...
==> Pouring bash--5.1.16.arm64_monterey.bottle.tar.gz
/opt/homebrew/Cellar/bash/5.1.16: 157 files, 11.5MB
(base) jr@Historys-MacBook-Air test % /opt/homebrew/Cellar/bash/5.1.16/bin/bash --version
GNU bash, version 5.1.16(1)-release (aarch64-apple-darwin21.1.0)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
(base) jr@Historys-MacBook-Air test % chsh -s /opt/homebrew/Cellar/bash/5.1.16/bin/bash
Changing shell for jr.
Password for jr:
chsh: /opt/homebrew/Cellar/bash/5.1.16/bin/bash: non-standard shell
任何人都可以指出如何 a. 运行 5.1.16 bash and/or b.在 mac os12 上使用 cp --backup=numbered
(and/or c. 权衡 bash 版本是否破坏了我的 cp 命令?)
回答你的三个问题:
- 将
/opt/homebrew/Cellar/bash/5.1.16/bin/bash
(或者更好,opt/local/bin/bash
这是它的符号链接)添加到/etc/shells
- macOS 附带的
cp
版本与 GNU 版本不同。它缺少--backup=numbered
选项。您需要从Homebrew
安装GNU Coreutils
以获得您想要的行为。 GNUcp
命令将以g
作为 GNUcp
. 的 bash
和zsh
版本都与cp
命令的选项或行为没有任何关系。
gcp
前缀