Jako většina uživatelů mám nastavenou spoustu aliasů, které poskytují výchozí sadu příznaků pro často používané programy. Například,
alias vim='vim -X'
alias grep='grep -E'
alias ls='ls -G'
 Problém je v tom, že pokud chci použít which abych viděl, kde mám vim /grep /ls /etc přichází z, alias překáží:
$ which vim
vim: aliased to vim -X
 Toto je užitečný výstup, ale ne to, co v tomto případě hledám; Znám vim má alias vim -X ale chci vědět, kde to vim pochází z.
 Krátce k dočasnému zrušení definice aliasu, abych mohl použít which existuje snadný způsob, jak mít which ‚rozbalit‘ alias a spustit se na něm?
 Upravit: Zdá se, že which je shell-builtin s různým chováním v různých shellech. V Bash, SiegeX návrh --skip-alias vlajková díla; nicméně jsem na Zsh. Existuje tam něco podobného?
Přijatá odpověď:
 which je ve skutečnosti špatný způsob, jak dělat takové věci, protože vytváří odhady o vašem prostředí na základě $SHELL a spouštěcí soubory (myslí si), které shell používá; nejen, že někdy hádá špatně, ale obecně mu nemůžete říct, aby se choval jinak. (which na mém Ubuntu 10.10 nerozumí --skip-alias jak uvádí například @SiegeX.) type používá aktuální prostředí shellu místo toho, aby se šťoural do vašich konfiguračních souborů, a lze mu říct, aby ignoroval části tohoto prostředí, takže vám ukáže, co se skutečně stane, místo toho, co by se stalo při rekonstrukci vašeho výchozího shellu.
 V tomto případě type -P obejde všechny aliasy nebo funkce:
$ type -P vim
/usr/bin/vim
Můžete jej také požádat, aby odloupl všechny vrstvy, jednu po druhé, a ukáže vám, co najde:
$ type -a vim
vim is aliased to `vim -X'
vim is /usr/bin/vim
(Rozšíříme to z komentářů:)
 Problém s which je, že je to obvykle externí program místo vestavěného shellu, což znamená, že nevidí vaše aliasy nebo funkce a musí se je pokusit rekonstruovat ze spouštěcích/konfiguračních souborů shellu. (Pokud je to vestavěný shell, jako je tomu v zsh ale zjevně ne bash , je pravděpodobnější, že použije prostředí shellu a udělá správnou věc.)
 type je příkaz kompatibilní s POSIX, který se musí chovat, jako by byl vestavěný (to znamená, že musí používat prostředí shellu, ze kterého je vyvolán, včetně místních aliasů a funkcí), takže obvykle je em> vestavěný.
 Obecně se v csh nenachází /tcsh , ačkoli ve většině moderních verzí těch which je vestavěný shell a dělá správnou věc; někdy je vestavěný what místo toho a někdy není dobrý způsob, jak vidět aktuální prostředí shellu z csh /tcsh vůbec.