which вроде ненаходит
Как сделать, чтоб находил? Всё-таки непонятно.
Как это работает?
Всё очень просто.
'man which' же!
ОПИСАНИЕ
Which принимает один или более аргументов имя_программы. Для каждого из них она
выводит тот полный путь к исполняемому файлу, который будет использован командной
оболочкой, если имя_программы ввести в качестве команды в командной строке. Эта
программа выполняет поиск исполняемых файлов или сценариев в каталогах, перечисленных
в переменной окружения PATH используя тот же алгоритм, что и bash(1).
Точно так же работает двуударный Tab после набора первых двух-трёх символов имени файла в bash shell:
# mo
mocp modutil mount.cifs mount.lowntfs-3g mouse_autosetup
modem-manager monitor_ddc mount.crypt mount.nfs mouseconf
modindex monitor_scan mount.crypt_LUKS mount.nfs4
modinfo monitor_setup mount.crypto_LUKS mount.ntfs
modplugplay more mount.encfs13 mount.ntfs-3g
modprobe mount mount.fuse mountpoint
Строка из предыдущего вывода:
# which modplugplay more mount.encfs13 mount.ntfs-3g
/usr/bin/modplugplay
/bin/more
/sbin/mount.encfs13
/sbin/mount.ntfs-3g
Например каталог /opt в переменной PATH не описан, поэтому файл лежащий в нём без указания пути к нему не будет найден.
Чтобы находился без указания пути, нужно в одном из каталогов bin, описанных в переменной PATH создать символическую ссылку (симлинк) на этот исполняемый файл.
Посмотреть какие каталоги описаны в переменной PATH можно командой 'echo $PATH' от пользователя или рута.
Например файл /opt/jigdo-bin-0.7.3/jigdo-lite без указания пути к нему выполнен не будет:
# jigdo-lite
-bash: jigdo-lite: команда не найдена
Но если, на этот файл в каталогах /usr/bin или /usr/local/bin, описанных в переменной PATH, создать символическую ссылку, запускать его можно будет введя в bash только имя этого исполняемого скрипта.
Соответственно и which его найдёт.
Без указания полного пути к нему.
Поняв как это работает, вы и сами сможете анализировать или исправлять какие-то ситуации.
И может быть поможете когда-нибудь мне. :)