Let's say, I opened a terminal and entered / executed some shell commands.
But I didn't invoke explicitly Bash or any other shell.
What shell was used by default?
Let's say, I opened a terminal and entered / executed some shell commands.
But I didn't invoke explicitly Bash or any other shell.
What shell was used by default?
The one specified on your line in /etc/passwd
(it is a :
separated line and the shell is the final one).
For example mine:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
Here it is /bin/bash
(the Ubuntu default)
You can also use chsh
:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
This is telling me my shell is /bin/bash
and letting me change it.
Finally, echo $SHELL
will do the same:
$ echo $SHELL
/bin/bash
typing the following will display what shell the terminal opened with:
echo $SHELL
However, to find out what shell you are currently in (you may have changed it) type
ps -p $$
e.g. you will see that the shell is bash in the example output
PID TTY TIME CMD
3500 pts/0 00:00:01 bash
Another method is to use
echo $0
this will simply return the name of the current shell.
GNU Bash is the shell used by default in terminals on Ubuntu. However when scripts are executed on system boot then dash is used, as it is dash that is /bin/sh.
This is defined in the $SHELL environmental variable. You can check by typing echo $SHELL
in the terminal.
By default it's bash:
env | grep ^SHELL=
In most cases will produce
SHELL=/bin/bash
useradd
, it defaults to sh
. $ useradd -D|grep SHELL
SHELL=/bin/sh
.
– Sparhawk
Apr 10 '14 at 06:48
To get file path of current shell executable one can use
readlink -f /proc/$$/exe
Some possible outputs are:
/bin/bash
/usr/bin/bash
/usr/bin/zsh
/home/victor/.linuxbrew/Cellar/zsh/5.2/bin/zsh
sudo netstat -an | grep LISTEN | grep -v ^unix
. I see no reason to enclose that in a bash subshell. – Caesium Dec 14 '11 at 23:30sudo bash -c "..."
would ensure that the entire pipe is executed by root. – Keith Thompson Dec 15 '11 at 00:51commandA | sudo commandB | commandC
, you could do asudo id
first (runs theid
command asroot
, but also acquires a "use sudo without password prompt" token that lasts for (default) 15 minutes. – waltinator Dec 20 '11 at 04:10sudo -v
refreshes the token without all the effort of runningid
. – waltinator Dec 20 '11 at 04:25chsh
then you must log out and log back in to see this change. – Neil Traft Jul 06 '14 at 22:01