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ý jetype
příkaz:$ type '[' [ is a shell builtin
-
Pro rybí skořápku
fish
,type
vestavě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ý jewhence
příkaz — stype
původně nastaven jako běžný alias prowhence -v
acommand
vestavěný s-v
možnost ekvivalentníwhence
:$ whence -v ls ls is a tracked alias for /bin/ls
-
Pro Z Shell,
zsh
, vestavěný jewhence
pomocí příkazucommand
vestavěný s-v
možnost ekvivalentníwhence
a vestavěnétype
,which
awhere
ekvivalentníwhence
s možnostmi-v
,-c
a-ca
respektive.$ whence ls /bin/ls
-
Pro TC Shell,
tcsh
, vestavěný jewhich
pří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:
[email protected]:~$ 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:
[email protected]:~$ alias listdir=/bin/ls
[email protected]:~$ listdir /
bin dev initrd.img lib32 media proc selinux tmp vmlinuz
...
[email protected]:~$ which listdir
[email protected]:~$
type
, nicméně funguje:
[email protected]:~$ 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