Как определить откуда запускается команда в bash (type, which, whereis)
При запуске любой команды в Bash может запуститься внутренняя команда Bash или внешняя программа. Для того чтобы определить, что запустится используется команда type
.
user@debian-server:~$ type ls
ls is aliased to `ls --color=auto'
user@debian-server:~$ type cd
cd is a shell builtin
2
3
4
Параметр -t
заставляет команду выводить описание в виде одного слова.
user@debian-server:~$ type -t ls
alias
user@debian-server:~$ type -t cd
builtin
2
3
4
А параметр -a
показывает все возможные варианты
user@debian-server:~$ type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
ls is /bin/ls
2
3
4
Команда which
выполняет похожую функцию — выводит путь к фалу который будет запущен при запуске команды. which
— внешняя программа, поэтому она не работает со внутренними командами баш и не показывает синонимы, в отличии от команду type
.
user@debian-server:~$ which ls
/usr/bin/ls
user@debian-server:~$ which -a ls
/usr/bin/ls
/bin/ls
2
3
4
5
Ещё одна команда whereis
, кроме пути к файлу, показывает файлы man
и файлы с исходным кодом, при их наличии.
user@debian-server:~$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
user@debian-server:~$ whereis tar
tar: /usr/bin/tar /usr/share/man/man1/tar.1.gz
2
3
4
С помощью параметров можно выводить только файлы разного типа: -b
— исполняемые файлы, -m
— файлы man
и s
— файлы исходного кода.
user@debian-server:~$ whereis -b tar
tar: /usr/bin/tar
user@debian-server:~$ whereis -m tar
tar: /usr/share/man/man1/tar.1.gz
user@debian-server:~$ whereis -s tar
tar:
2
3
4
5
6
Параметр -l
заставляет команду whereis
вывести все пути в которых она производит поиск.
user@debian-server:~$ whereis -l
bin: /usr/bin
bin: /usr/sbin
bin: /usr/lib/x86_64-linux-gnu
bin: /usr/lib
bin: /usr/lib32
bin: /usr/lib64
bin: /etc
bin: /usr/games
bin: /usr/local/bin
bin: /usr/local/sbin
bin: /usr/local/etc
bin: /usr/local/lib
bin: /usr/local/games
bin: /usr/include
bin: /usr/local
bin: /usr/libexec
bin: /usr/share
man: /usr/share/man/ko
man: /usr/share/man/sr
man: /usr/share/man/fr
man: /usr/share/man/man7
man: /usr/share/man/uk
man: /usr/share/man/pl
man: /usr/share/man/es
man: /usr/share/man/pt
man: /usr/share/man/id
man: /usr/share/man/man6
man: /usr/share/man/nl
man: /usr/share/man/man4
man: /usr/share/man/pt_BR
man: /usr/share/man/man5
man: /usr/share/man/zh_TW
man: /usr/share/man/sv
man: /usr/share/man/man2
man: /usr/share/man/zh_CN
man: /usr/share/man/fr.UTF-8
man: /usr/share/man/cs
man: /usr/share/man/ro
man: /usr/share/man/da
man: /usr/share/man/it
man: /usr/share/man/tr
man: /usr/share/man/man3
man: /usr/share/man/fr.ISO8859-1
man: /usr/share/man/ru
man: /usr/share/man/ja
man: /usr/share/man/fi
man: /usr/share/man/de
man: /usr/share/man/man1
man: /usr/share/man/sl
man: /usr/share/man/man8
man: /usr/share/man/hu
man: /usr/share/info
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53