it-mot-dan-vi.com

Làm thế nào để tìm đường dẫn cài đặt cho một phần mềm trong linux?

Trong linux, tôi khởi chạy một phần mềm bằng cách gõ, ví dụ: liquidplot. Làm thế nào tôi có thể tìm thấy đường dẫn cài đặt cho phần mềm này?

80
user5997

Bạn có thể dùng:

which fluidpoint

để xem nó đang thực thi từ đâu (nếu nó nằm trong $ PATH của bạn). Hoặc là:

find / -name fluidpoint 2> /dev/null

để tìm một tệp có tên fluipoint và chuyển hướng lỗi trên các hệ thống tệp ảo.

Thông thường họ ở trong /sbin, /usr/sbin, /usr/local/bin hoặc là ~ như một thư mục ẩn.

Từ hướng dẫn:

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

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

Hướng dẫn đầy đủ: https://linux.die.net/man/1/which

70
n0pe

Nếu bạn sử dụng phân phối dựa trên RPM (CentOS, RHEL, SUSE, openSUSE), bạn có thể sử dụng vòng/phút

Thí dụ:

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

Mọi thứ không được cài đặt vào các vị trí trong thế giới Linux/UNIX giống như chúng ở trong thế giới Windows (và thậm chí là phần nào trong thế giới Mac). Chúng được phân phối nhiều hơn. Các nhị phân nằm trong /bin hoặc là /sbin, thư viện nằm trong /lib, biểu tượng/đồ họa/tài liệu nằm trong/share, cấu hình nằm trong /etc và dữ liệu chương trình nằm trong /var.

Các /bin, /lib, /sbin chứa các ứng dụng cốt lõi cần thiết để khởi động và /usr chứa tất cả các ứng dụng hệ thống và người dùng khác.

14
djsumdog

Lệnh whereis định vị các tệp nhị phân, nguồn và trang thủ công cho một lệnh và lệnh type cho biết chính xác Shell thực thi gì khi bạn chạy một lệnh nhất định.

Thử whereis -l fluidplot trong trường hợp của bạn. Nếu nó chỉ trả về "liquidplot:", nhưng không có đường dẫn, điều đó có nghĩa là phần mềm chưa được cài đặt. Lưu ý rằng điều này không bao gồm các tệp có thể bị ẩn trong thư mục chính trong ~/.local/share/ (trong trường hợp của tôi).

Tìm thấy trên Linux Vít

6
魔大农

Chỉ cần thêm một số điểm vào câu trả lời của @ djsumdog, nếu bạn đang sử dụng dist dựa trên DPKG, như Ubuntu, bạn có thể sử dụng

dpkg --status some_package

để kiểm tra xem nó nói về cái gì, và

dpkg --listfiles some_package

để kiểm tra những tập tin được bao gồm/có liên quan đến gói này. Đó là cho các gói không có nhị phân để chạy, như libnss3. Và

dpkg --search some_file

để tìm gói nào bao gồm tập tin này.

Ví dụ, dpkg --listfiles libnss3 đưa cho tôi:

/.
/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

Lưu ý rằng các thư mục không chỉ được sở hữu bởi các gói này, mà còn bởi các gói khác. Chỉ cần kiểm tra các tập tin.

Và ngược lại, dpkg --search libnss3.so đưa cho tôi:

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
5
WesternGun

Bạn có thể thử chạy:

ps aux | grep "THE_NAME_OF_A_PROGRAM"

Có nhiều khả năng bạn sẽ thấy đường dẫn đến chương trình (nếu nó đang chạy)

0
user213527

Thay vì sử dụng which ( có lẽ không phải là lựa chọn đúng trừ khi bạn sử dụng csh ), bạn có thể sử dụng command -v fluidplot để đưa Shell đến boune như Shell để cho bạn biết nó sẽ làm gì nếu bạn yêu cầu nó chạy lệnh (fluidplot trong ví dụ này).

Một số ví dụ cho tôi:

$ 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

vì vậy bạn cũng có thể sử dụng nó để kiểm tra nếu một lệnh thậm chí sẽ được tìm thấy và cố gắng chạy. Vì hầu hết chúng ta sử dụng các shell giống như Bourne (ví dụ: bash hoặc zsh), điều này thường thích hợp hơn với which

0
Eric Renouf