Sposób pierwszy - stworzenie aliasu
Wystarczy do pliku ~/.bashrc dodać następującą linijkę:
alias program="/katalog1/katalog2/katalog3/program"
Sposób drugi - linkowanie symboliczne
Czyli wydajemy w konsolce polecenie:
ln -s /katalog1/katalog2/katalog3/program /usr/bin/program
/usr/bin jest jedną z domyślnych ścieżek przy poszukiwaniu poleceń, więc wpisanie w konsoli polecenia program powinno nam go uruchomić. Niestety, aby operować na /usr/bin należy mieć uprawnienia roota.
Sposób trzeci - dodanie odpowiedniej ścieżki do zmiennej PATH
Wystarczy dodać do ~/.bashrc linijkę o treści:
export PATH="$PATH:/katalog1/katalog2/katalog3/"
jak /opt nie jest za duży, to można uczynić taki plik wykonywalnym i robić do niego linki o właściwych nazwach:
OdpowiedzUsuń#!/bin/bash
IFS=\x0 FILES=($(find /opt -type f -executable -name $(basename $0) -print0 2>/dev/null))
"${FILES[0]}" "$@"
(uruchomi pierwszy znaleziony, jest odporny na spacje w nazwach plików i katalogów)
można też użyć inotify do indeksowania plików wykonywalnych w zadanych lokalizacjach i np. tworzenia plików .desktop
ale popełniłem bzdurę, ale to zadziała, o ile nie ma dwukropków w nazwach plików, co jest mało prawdopodobne
OdpowiedzUsuń#!/bin/bash
IFS=':' FILES=($(find /opt -type f -executable -name $(basename $0) -printf '%p:' 2>/dev/null))
"${FILES[0]}" "$@"