What Shell Am I Using? Here’s How To Find Out

Sep 25, 2009 - 5 Comments

Terminal in OS X

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

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.

terminal 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.


Related articles:

Posted by: David Mendez in Ask OS X Daily, Command Line, Mac OS


» Comments RSS Feed

  1. Packet Bob says:

    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

  2. DistortedLoop says:

    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).

  3. Matteo Corti says:


    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
    $ tcsh
    % echo $SHELL
    % ksh
    > echo $SHELL


Leave a Reply


Shop on Amazon.com and help support OSXDaily!

Subscribe to OSXDaily

Subscribe to RSS Subscribe to Twitter Feed Follow on Facebook Subscribe to eMail Updates

Tips & Tricks


iPhone / iPad



Shop on Amazon to help support this site