Take the tour ×

For example, I have git installed on my system. But I don't remember where I installed it, so which command is fit to find this out?

share|improve this question
Heh, heh "which command" indeed :) –  Tikhon Jelvis Jan 8 '12 at 0:31
add comment

5 Answers

up vote 19 down vote accepted

If it is in your path, then you can run either type git or which git. The which command has had problems getting the proper path (confusion between environment and dot files). For type, you can get just the path with the -p argument.

If it is not in your path, then it's best to look for it with locate -b git It will find anything named 'git'. It'll be a long list, so might be good to qualify it with locate -b git | fgrep -w bin.

share|improve this answer
I use locate endlessly (it is very fast), but for those unaware of it, locate is only as up to date as its most recent database update, which is automatically run daily on my Ubuntu. The refresh command is sudo updatedb ... Also locate has built-in regex capability, so commands like this works: locate -br "^git$" ... -b` means restrict the search to just the basename ... or without the -b, it searches the full pathname .. Also, it only searches paths you have configured it to search.. there is no command-line control of this other than your regex filters. –  Peter.O Jan 7 '12 at 21:24
Prefer type to which. which easily gets confused. –  Gilles Jan 7 '12 at 23:38
@Gilles, that's funny for me the behavior is exactly the opposite: type is a shell builtin that tells me aliases and such, and which is an external program that shows me the path to an executable... although if there's a builtin that gets in the way that executable won't get called. –  quodlibetor Jan 10 '12 at 21:37
@quodlibetor The problems with which are that it doesn't know about shell built-ins and functions (which is relevant when you're wondering what typing the command will do), and it uses a different $PATH on some systems. –  Gilles Jan 10 '12 at 21:42
add comment

whereis git and you get the path to the command.

that is just if the git is in you PATH variable, in case you have installed it not through you package manager, it is more complex and you should use the find or locate commands.

share|improve this answer
Use of which is also encouraged. –  Nikhil Mulley Jan 7 '12 at 19:39
@Nikhil type, rather, not which. See How to use which on an aliased command? –  Gilles Jan 7 '12 at 23:39
@Gilles oh yeah, thanks. –  Nikhil Mulley Jan 8 '12 at 4:49
add comment

To get the path to the installed program you either use whereis or which. If you happen to forget it's name, you can useapropos with a synonym or description of your utility, e.g. apropos "version control" will find git. Following that is of course the whatis command to briefly summarize the function of a program. This does however not apply to all programs and functions on your system. Try for instance whatis "the meaning of life, universe and everything".

share|improve this answer
I thought it was going come back with "42"! LOL. –  Joe Jan 14 '12 at 9:35
add comment

The other answers here seem to be largely geared towards modern versions of Linux, so if you happen to use git on an OS that doesn't have locate, whereis, which, or apropos (like Solaris, HPUX, etc), then there is always the old standby find.

find / -name git 

One some older versions of the systems listed above, you may need a -print option supplied to find.

find / -name git -print

And if you do use locate, make sure you run updatedb periodically. (locate.updatedb on some BSD derivatives)

share|improve this answer
For programs in the path, use type; it's reliable and portable (except to 30-year old systems). –  Gilles Jan 7 '12 at 23:40
Thanks, @Gilles. I never knew about type. :) That's definitely going in the repertoire! –  Tim Kennedy Jan 9 '12 at 15:20
It's probably worth pointing out that find does a full depth-first search of the file system starting from wherever you root it. So find / -name git will traverse your whole system. If you know that the program is on your path you can usually do IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done , although Unix filesystems are permissive enough that this can break in a variety of ways if have weird characters in your PATH. –  quodlibetor Jan 9 '12 at 23:18
Actually the command I gave previously will break your PATH, the correct thing (with the same caveats as before) is IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Also, to reiterate, this answer should only be used by people who don't have access to type or which or locate, ie, almost nobody. @Arcege's answer is correct. –  quodlibetor Jan 10 '12 at 21:34
add comment

The POSIX standard way to do this is command -v git. All UNIX-like systems should support this.

share|improve this answer
I know this is over a year old, but this was exactly what I was looking for; surprised this isn't the accepted answer. –  Akoi Meexx Apr 5 at 14:43
add comment

Your Answer


