Portál AbcLinuxu, 11. května 2025 10:36
path=`dirname $0`V proměnné
$0
(0. argument příkazové řádky) je cesta k aktuálně spuštěnému programu.
Ak chces zistit, kde je skript ulozeny, tak mozes nasledovne pridat do toho tvojho skriptu:
echo "${BASH_SOURCE}"
alebo je tu moznost pouzit aj:
echo "${0}"
ale tento zapis nefunguje (nie ako by si mohol ocakavat) pri symlinkoch alebo ak je spustany pomocou source.
Obidva zapisy maju svoje opodstatnenie a zalezi na situacii.
Samozrejme, nesmiem zabudnut poznamenat,ze premenna BASH_SOURCE je viazana k pouzitiu prave bash-u. Je mozne, ze aj ine shell-y maju ekvivalent k tejto premennej. Takze pokial ide o prenositelnost, tak prave:
path="${0}"
je riesenie. Avsak, ak vyuzijete bash, tak riesenim je skor:
path="${BASH_SOURCE}"
co je ale tiez zbytocne priradenie, kedze v skripte mozte namiesto path sa dotazovat ${BASH_SOURCE} rovnako ako v predchadzajucom pripade ${0} .
path=`dirname $0`echo $path potom nevypíše /home/user...
path="$(dirname $(readlink -f $0))"
readlink
, to je ono. Jenom jsme mu nemohl přijít na jméno, tak jsem si začal myslet, že neexistuje $0
zkombinovat s pwd
a vyhodnotit správně relativní cestu. Nenapadá mne teď, zda na to existuje nějaký hotový nástroj.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.