linux - 为什么`which pushd`不返回任何东西?
问题描述
我的理解是,linux中的所有命令都必须存在于$PATH
,即使是最基本的命令
> which cd
/bin/cd
> which ls
/bin/ls
但是当我尝试时which pushd
,令我惊讶的是,它返回了:
/usr/bin/which: no pushd in (/bin:/usr/share/maven/bin:/usr/share/java/jdk1.8.0_131/bin:/usr/local/bin:/usr/bin:/usr/local/sbin)
pushd
已“安装”并正常工作。这挑战了我对 linux 命令的整体理解。
有人可以解释为什么会这样吗?
解决方案
有人可以解释为什么会这样吗?
pushd
与许多其他命令一样,是内置命令。which
本身就是一个可执行文件并which
搜索可执行文件 - 没有像pushd
.
要影响 shell 本身的当前工作目录,它必须是内置的,就像cd
.
您可以检查它是什么type
:
$ type pushd
pushd is a shell builtin
这种shell内置的其他例子是什么?
它们列在文档中:https ://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Builtin-Commands 。
推荐阅读
- python - 处理文件打开和文件关闭异常的正确方法
- zappa - zappa:将 aws 密钥和访问密钥放在哪里?
- javascript - 寻找一种有效的方法来为不和谐的机器人实施定时网络抓取
- javascript - 导出 BIP32 公钥(在 Base64 中)
- python - 如何通过从熊猫中的一行中获取名称来指定列
- r - 共享 R 降价输出
- javascript - 不要得到“P”值的输出
- snowflake-cloud-data-platform - 雪花中流的奇怪行为
- flutter - 如何在 Flutter 中从快照中求和不同的字符串
- google-cloud-platform - 如何在 GCP 中使用负载均衡器指向后端端口