别名 rm 和 /bin/rm 之间的区别

yan*_*yan 5 shell

使用/bin/rm abc.txt和有时必须使用的时间有什么区别alias rm然后执行rm abc.txt

jfo*_*erg 5

/bin/rm将始终引用rm您系统上的二进制命令。如果你只写rm abc.txt其中之一,可能会发生:

  • 您的 shellrm直接作为内置函数实现,或者调用了一个 shell 函数rm(没有运行外部命令)。

  • rm之前已使用别名 (with alias rm=<substituted-command>) 表示不同的意思。通常别名命令在功能上是相似的,但并非必须如此。

  • 如果以上都不适用,shell 会在其中查找外部命令/bin并运行它。

您可以使用alias查看所有定义的别名。还可以查看command -Vshell 内置命令,它可以告诉您给定的命令是外部命令、shell 函数、内置命令还是特殊内置命令。

  • 我不知道任何将 `rm` 实现为内置函数的 shell。你忘记的一种情况是,在`$PATH` 中的`/bin` 之前的某个目录中存在一个`rm` 可执行文件(例如`/usr/local/bin/rm`)。对于 bash,`type -a rm` 比 `command -V rm` 提供更多信息。 (2认同)