Příkaz, který se má použít, se liší shell od shellu.
Pouze vestavěný shell řekne správně, co shell udělá pro daný název příkazu, protože pouze vestavěné mohou plně vědět o aliasech, funkcích shellu, dalších vestavěných a tak dále. Pamatujte:Ne všechny příkazy v první řadě odpovídají spustitelným souborům.
-
Pro shell Bourne Again,
bash, vestavěný jetypepříkaz:$ type '[' [ is a shell builtin -
Pro rybí skořápku
fish,typevestavěný funguje podobně jako bash. Chcete-li získat pouze cestu ke spustitelnému souboru, použijtecommand -v:$ type cat cat is /bin/cat $ command -v cat /bin/cat -
Pro Korn Shell,
ksh, vestavěný jewhencepříkaz — stypepůvodně nastaven jako běžný alias prowhence -vacommandvestavěný s-vmožnost ekvivalentníwhence:$ whence -v ls ls is a tracked alias for /bin/ls -
Pro Z Shell,
zsh, vestavěný jewhencepomocí příkazucommandvestavěný s-vmožnost ekvivalentníwhencea vestavěnétype,whichawhereekvivalentníwhences možnostmi-v,-ca-carespektive.$ whence ls /bin/ls -
Pro TC Shell,
tcsh, vestavěný jewhichpříkaz — nezaměňovat s žádným externím příkazem s tímto názvem:> which ls ls: aliased to ls-F > which \ls /bin/ls
Další čtení
- https://unix.stackexchange.com/questions/85249/
Můžete použít which pro toto:
example@unixlinux.online:~$ which ls
/bin/ls
Funguje to tak, že vyhledáte PATH pro spustitelné soubory odpovídající názvům argumentů. Všimněte si, že nefunguje s aliasy shellu:
example@unixlinux.online:~$ alias listdir=/bin/ls
example@unixlinux.online:~$ listdir /
bin dev initrd.img lib32 media proc selinux tmp vmlinuz
...
example@unixlinux.online:~$ which listdir
example@unixlinux.online:~$
type , nicméně funguje:
example@unixlinux.online:~$ type listdir
listdir is aliased to `/bin/ls'
which ne (nutně) vrátit spustitelný soubor. Vrátí první odpovídající název souboru najde v $PATH (nebo více podobných pojmenovaných souborů při použití which -a )... skutečný spustitelný soubor může být vzdálen několik odkazů.
which locate
/usr/bin/locate
`file $(which locate)
/usr/bin/locate: symbolic link to /etc/alternatives/locate'
Příkaz, který vyhledá aktuální spustitelný soubor je readlink -e ,
(ve spojení s which )
readlink -e $(which locate)
/usr/bin/mlocate
Chcete-li zobrazit všechny mezilehlé odkazy :
f="$(which locate)" # find name in $PATH
printf "# %s\n" "$f"
while f="$(readlink "$f")" ;do # follow links to executable
printf "# %s\n" "$f"
done
# /usr/bin/locate
# /etc/alternatives/locate
# /usr/bin/mlocate