【问题标题】:Case insensitive OSX file system - weird change directory (cd) bash behaviour不区分大小写的 OSX 文件系统 - 奇怪的更改目录 (cd) bash 行为
【发布时间】:2018-09-07 17:52:24
【问题描述】:

据我所知,默认 OSX 文件系统不区分大小写。 实际上,我可以从终端输入:

echo foo

ECHO foo

但是使用change directory 命令我只能这样做:

cd /etc

如果我输入,什么都不会出现

CD /etc

谁能解释一下?

【问题讨论】:

  • 如果 CD 被散列,那么它应该可以工作!
  • 检查type cdtype CD 输出。
  • 它可以在你的 Mac 上运行吗?
  • type CD 输出为CD is hashed (/usr/bin/CD)type cd 输出为cd is a shell builtin

标签: bash macos


【解决方案1】:

目录更改仅在调用相应系统调用的程序期间有效。您在 cmets 中指出 CD/usr/bin/CD (正如 type CD 所说),这是一个(对您的目标毫无用处)程序:它会更改目录然后退出,而不会影响父程序。同时,cd 应该是内置的 bash。这使得 bash 可以在命令退出后保留 cd 更改的路径。

另请参阅:Unix&Linux StackExchange 上的What is the point of the cd external command?

【讨论】:

  • 好的,你告诉我内置命令不区分大小写的命令行为仅因为每个内置函数在路径中存在一个同名的程序(例如内置 echo 和 /bin/回声)。对于change directory(cd),该命令不能等同于内置命令。
  • @Luca 对。您可以首先观察到这一点,因为尽管 macOS 的文件系统不区分大小写,但 bash 仍然区分大小写。
  • @Luca:仅仅因为文件名不区分大小写并不意味着任何编程语言(bash 是)中的命令都是相同的。 Mac OS 在类 UNIX 世界中是不寻常的,它具有不区分大小写的默认文件系统。
  • 不是每个内置都有对应的外部程序。最初,shell 是用于运行外部程序的非常小的程序,仅此而已。随着时间的推移,shell 开始提供内置版本的命令,例如 echo 以提高效率。 cd 主要只有在它是内置的时候才有用,但there are some reasons 也有一个外部命令。
猜你喜欢
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 2020-01-16
  • 2020-03-09
  • 2019-03-17
  • 2011-12-30
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多