如何找到Linux下软件的安装路径?


Answers:


62

您可以使用:

which fluidpoint

查看它是从哪里执行的(如果它在您的$ PATH中)。要么:

find / -name fluidpoint 2> /dev/null

查找名为fluipoint的文件并重定向虚拟文件系统上的错误。

通常他们都在/sbin/usr/sbin/usr/local/bin~作为一个隐藏目录。

从手册:

NAME
       which - shows the full path of (shell) commands.

SYNOPSIS
       which [options] [--] programname [...]

完整手册:https//linux.die.net/man/1/


4
或检查程序是否实际上是别名,例如alias fluidpoint
Chad Feller

2
@Chad的某些版本which(例如,内置到ZSH的版本)将为您做到这一点
Michael Mrozek

@Michael很高兴知道。由于您的评论,我才发现较新版本的bash也可以这样做。为您的评论+1。
乍得·费勒

“通常是……”这一行很不真实,应在/opt/*或中添加其他软件/usr/local/bin~是您的主目录,我很困惑为什么您将其称为“隐藏”。
Steve-o

抱歉,我含糊不清~/.dir。隐藏目录位于主目录下。而且我完全忘记了/usr/local/bindop。
2011年

13

如果您使用基于RPM的发行版(CentOS,RHEL,SUSE,openSUSE),则可以使用rpm -ql

例:

rpm -ql findutils
/bin/find
/usr/bin/find
/usr/bin/xargs
/usr/share/doc/packages/findutils
/usr/share/doc/packages/findutils/AUTHORS
/usr/share/doc/packages/findutils/COPYING
/usr/share/doc/packages/findutils/NEWS
/usr/share/doc/packages/findutils/README
/usr/share/doc/packages/findutils/THANKS
/usr/share/doc/packages/findutils/TODO
/usr/share/info/find.info.gz
/usr/share/man/man1/find.1.gz

事物没有像在Windows(甚至在Mac)中一样安装在Linux / UNIX世界中。它们更加分散。二进制文件位于/bin或中/sbin,库位于中/lib,图标/图形/文档位于/ share中,配置位于中/etc,程序数据位于中/var

/bin/lib/sbin包含需要启动的核心应用和/usr包含所有其他用户和系统应用。


5

whereis命令查找命令的二进制文件,源文件和手册页文件,并且该type命令告诉您在运行特定命令时外壳程序将执行什么操作。
请尝试whereis -l fluidplot您的情况。

如果仅返回“ fluidplot:”,但没有路径,则表示未安装该软件。

请注意,这不包括可能隐藏在主文件夹下的文件~/.local/share/(在我的情况下)。

Linux Screw上找到


回复:“这不包括...”,目前尚不清楚是指typewhereis还是两者。
agc

4

只是在@djsumdog的答案上添加一点,如果您使用的是基于DPKG的dist,例如Ubuntu,则可以使用

dpkg --status some_package

检查它是关于什么的,以及

dpkg --listfiles some_package

检查包含/与此包相关的文件。它用于没有二进制文件的软件包,例如libnss3。和

dpkg --search some_file

查找包含该文件的软件包。

例如,dpkg --listfiles libnss3给我:

/.
/usr
/usr/lib
/usr/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu/libssl3.so
/usr/lib/i386-linux-gnu/nss
/usr/lib/i386-linux-gnu/nss/libsoftokn3.chk
/usr/lib/i386-linux-gnu/nss/libnssckbi.so
/usr/lib/i386-linux-gnu/nss/libnsssysinit.so
/usr/lib/i386-linux-gnu/nss/libfreebl3.chk
/usr/lib/i386-linux-gnu/nss/libnssdbm3.chk
/usr/lib/i386-linux-gnu/nss/libnssdbm3.so
/usr/lib/i386-linux-gnu/nss/libsoftokn3.so
/usr/lib/i386-linux-gnu/nss/libfreebl3.so
/usr/lib/i386-linux-gnu/libnssutil3.so
/usr/lib/i386-linux-gnu/libsmime3.so
/usr/lib/i386-linux-gnu/libnss3.so
/usr/share
/usr/share/doc
/usr/share/doc/libnss3
/usr/share/doc/libnss3/copyright
/usr/share/doc/libnss3/changelog.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libnss3

请注意,文件夹不仅由该程序包拥有,而且也由其他程序包拥有。只需检查文件即可。

相反,dpkg --search libnss3.so给我:

firefox: /usr/lib/firefox/libnss3.so
thunderbird: /usr/lib/thunderbird/libnss3.so
libnss3:i386: /usr/lib/i386-linux-gnu/libnss3.so
libnss3-1d:i386: /usr/lib/i386-linux-gnu/libnss3.so.1d

0

除了使用which可能不是正确的选择,除非您使用csh),您可以command -v fluidplot使shell像shell那样启动,以告诉您如果您要求它运行命令会做什么(fluidplot在此示例中) 。

对我来说一些例子:

$ command -v ls
alias ls='ls --color=auto'
$ command -v cat
/bin/cat
$ test_func() {
> :
> }
$ command -v test_func
test_func
$ which test_func
/usr/bin/which: no test_func in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin)
$ if command -v noSuchFile; then echo "It exists"; else echo "does not exist"; fi
does not exist

因此您也可以使用它来测试是否会找到并尝试运行命令。由于我们大多数人都使用类似Bourne的外壳(例如bash或zsh),因此通常比which

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.