Linuxでは、たとえばfluidplotと入力してソフトウェアを起動します。このソフトウェアのインストールパスを見つけるにはどうすればよいですか?
以下を使用できます。
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/which
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
Linux/UNIXの世界では、Windows(およびMacでも)のように、物事はインストールされていません。彼らはより分散しています。バイナリは/bin
または/sbin
にあり、ライブラリは/lib
にあり、アイコン/グラフィックス/ドキュメントは/ shareにあり、構成は/etc
にあり、プログラムデータは/var
。
/bin
、/lib
、/sbin
には起動に必要なコアアプリケーションが含まれ、/usr
にはその他すべてのユーザーおよびシステムアプリケーションが含まれます。
whereis
コマンドは、コマンドのバイナリファイル、ソースファイル、およびマニュアルページファイルを検索し、type
コマンドは、特定のコマンドを実行したときにシェルが何を実行するかを示します。
あなたのケースでwhereis -l fluidplot
を試してください。 「fluidplot:」のみが返され、パスが返されない場合は、ソフトウェアがインストールされていません。これには、~/.local/share/
(私の場合)のホームフォルダー内で非表示になっている可能性があるファイルは含まれません。
Linux Screw にあります
@djsumdogの答えにいくつかのポイントを追加するために、UbuntuのようにDPKGベースのdistを使用している場合は、
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
あなたは走ることを試みることができます:
ps aux | grep "THE_NAME_OF_A_PROGRAM"
プログラムへのパスが表示される可能性はかなり高いです(実行中の場合)。
which
を使用する代わりに( cshを使用していない限り、これはおそらく正しい選択ではありません )command -v fluidplot
は、コマンドを実行するように依頼した場合に何をするかをシェルに指示するように、シェルを攻撃させます(この例では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
よりも望ましい場合が多い