基于 Ubuntu 12.04 手册页which
如果其参数是作为严格符合 POSIX 标准的 shell 中的命令给出的,则返回将在当前环境中执行的文件(或链接)的路径名。它通过在 PATH 中搜索与参数名称匹配的可执行文件来实现此目的。它不跟踪符号链接。
我还知道,如果您想确保已安装某个程序,您可以输入dpkg -l | grep myprogram
。
最近,我从一个 deb 包中下载了 gcc41 和 g++41。我使用以下命令安装了它们:sudo dpkg -i gcc41-compat-4.1.2_i386.deb g++41-compat-4.1.2_i386.deb
。
我的问题是,当我打字时dpkg -l | grep gcc
,我看到了这个
ii gcc 4:4.6.3-1ubuntu5 GNU C compiler
ii gcc-4.5 4.5.3-12ubuntu2 The GNU C compiler
ii gcc-4.5-base 4.5.3-12ubuntu2 The GNU Compiler Collection (base package)
ii gcc-4.6 4.6.3-1ubuntu5 GNU C compiler
ii gcc-4.6-base 4.6.3-1ubuntu5 GCC, the GNU Compiler Collection (base package)
ii gcc41-compat 4.1.2 No description
ii libgcc1 1:4.6.3-1ubuntu5
如您所见,gcc41-compat
已安装,但当我输入时which gcc41
没有任何结果。根据我上面提到的手册页,我应该看到一些东西。它在哪里?或者我的结论的哪一部分是错误的?
答案1
which
给出二进制安装目录的位置。它用作
which <pkgname>
因此命令
which gcc
给出
/usr/bin/gcc
dpkg -i
dpkg -i
用于安装。与查找包目录无关。dpkg -l
dpkg -l
用于查找包是否已安装。dpkg -l <pkgname>
将为您提供与给定名称匹配的已安装包的名称的输出。dpkg -l
提供所有包的列表。write
它用于向其他用户发送消息。
我不知道你为什么用这个。
grep
仅显示输出的相关部分。这在管道命令时很有用。
如果你想找到是否
gcc
已安装,最好的方法是使用dpkg -l|grep gcc
这将显示所有名称中包含 gcc 的软件包(已安装),
您也可以使用,
dpkg -l gcc
但它的输出仅显示那些仅包含 gcc 的包。如果你想检查
gcc
二进制文件的位置$PATH
,请尝试which gcc
尽管也有一些其他的。