linux里面的command和which
【摘要】 这条命令会检查以下命令是否存在,并输出它们的位置(如果存在):command -v python3 pip3 nginx openssl systemctl apt-get useradd 2>&1说明:command -v:POSIX 标准命令,用于显示命令的路径。如果命令存在,输出其路径;如果不存在,则无输出(返回非零退出码)。2>&1:将标准错误重定向到标准输出,方便查看错误信息。注意...
这条命令会检查以下命令是否存在,并输出它们的位置(如果存在):
command -v python3 pip3 nginx openssl systemctl apt-get useradd 2>&1
说明:
command -v:POSIX 标准命令,用于显示命令的路径。如果命令存在,输出其路径;如果不存在,则无输出(返回非零退出码)。2>&1:将标准错误重定向到标准输出,方便查看错误信息。
注意:
command -v只检查命令是否在PATH中可找到,不检查它是否真的能正常运行。- 如果一次性传入多个命令,
command -v会为每个存在的命令输出一行路径。
如果你是想用这条命令做环境检测(比如判断某台机器是否具备某些工具),可以配合 &&、|| 或 if 来判断。例如:
if command -v nginx >/dev/null 2>&1; then
echo "nginx 已安装"
else
echo "nginx 未安装"
fi
它和which大体上是同一个目的(查找命令路径)
command -v |
which |
|
|---|---|---|
| 来源 | POSIX 标准内建命令 | 外部程序(非标准) |
| 可移植性 | 几乎所有 shell 都支持 | 有些精简系统没装 |
| 推荐度 | ✅ 脚本中推荐 | ⚠️ 不推荐用于脚本 |
command -v 是 shell 内建命令,不依赖外部程序;which 是一个独立的可执行文件,某些最小化环境(如 Alpine、容器)里可能根本没有。
command -v 还能识别 shell 内建命令、函数、别名,而 which 通常只查 PATH 里的可执行文件。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)