What Shell Am I Using? Here’s How To Find Out
Ever wondered what shell you are using at the command line? It’s not unusual to want or need to know which shell is running, and though you may hear this question many times, the answer could be different for every user, thus the easiest thing to do is to issue a terminal command which determines the currently active shell.
How to Find What Shell Is Being Used in Mac OS X, Unix, Linux
The easiest way to find out what shell is being used is to type the following command syntax at the command line prompt:
echo $SHELL
Hit Return. Yes, that is $SHELL in all caps, case matters in the unix world. You should see something like this printed back to you, indicating the shell in use:
$ echo $SHELL
/bin/bash
This would mean the shell is bash, but you may wind up seeing something differently, like /bin/tcsh /bin/zsh /bin/ksh or a variety of other shells that are out there.
This command works across all unix platforms, whether it’s Mac OS X, Linux, FreeBSD, or whatever, and it’s always reported back the same.
For the vast majority of Mac OS X users, you will be using the Bash shell by default, which is both the standard in all recent versions of OS X and also one of the easier to use shells out there. You can set it to another shell you want rather easily by changing the preferences inside the Mac Terminal, or by using “export $SHELL=” and adjusting it the old fashioned way.
Remember, shells can also be launched from other shells, creating a nest of sorts. For example, you can run tcsh over bash over ksh, though there isn’t much reason to do that. Typing “exit” will quit out of one shell and return to the other if you are in such a situation, where you can then re-run the echo $SHELL command to determine the type again.
You might want to know which shell is assigned to a user. While you can use the $SHELL variable when logged in to see the current shell, you can also check other user shells.
One method to check other user shell is to check the passwd file at /etc/passwd
Mac OS X users can use Directory Service dscl command in the following way to check as well
sudo dscl localhost -read /Local/Default/Users/USERNAME shell
Please delete this one, I posted twice by error.
Strangely enough, when I open a terminal window in OS X, it says “Terminal – bash – 80×24” right along the title bar.
I don’t recall if I set those items in the past, so perhaps they are the OS X default, but they are controlled in Terminal by opening the Preferences and clicking on Window. Here you can title the window bar with your own text, and then there are check boxes for various other things like the active process (your shell name if idle).
Hi,
this is not always true and you should not rely on it. From the bash man page:
SHELL The full pathname to the shell is kept in this environment variable.
If it is not set when the shell starts, bash assigns to it the full
pathname of the current user’s login shell.
This means that if it is already set a new shell will not replace the value on startup.
tcsh and ksh behave the same way:
$ echo $SHELL
/bin/bash
$ tcsh
% echo $SHELL
/bin/bash
% ksh
> echo $SHELL
/bin/bash
Matteo
+1