How to test what shell I am using in a terminal? The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Community Moderator Election ResultsDetermine current shell nameHow to detect the command interpreter from within a shell script?Is there a general command to see what shell is running?How can I check which shell I am currently using?determine shell in script during runtimeDifference between “echo $SHELL” and “which bash”How do I *reliably* and *simply* get the current shell interpreter name?POSIX-compatible/cross-shell way to get version of running shell?ssh behavior for root and non-root usercannot get scripts to run in a Lubuntu (Xenial) Minimal (+LXDE) VM with shebangsHow can I check which shell I am currently using?Determine current shell nameHow to send input in a new terminal using Shell Scriptis the shell a frontend to the terminal?Source shell script automatically in terminalWhat exactly is terminal? What is shell?Error command test shell linuxHow does the Terminal and the Shell exchange data?Open multiple terminal but without closing the previous one using shell scriptUbuntu multiple terminal shell configuration
How to split my screen on my Macbook Air?
How are presidential pardons supposed to be used?
"... to apply for a visa" or "... and applied for a visa"?
Cooking pasta in a water boiler
Python - Fishing Simulator
What is this lever in Argentinian toilets?
Wolves and sheep
Does Parliament need to approve the new Brexit delay to 31 October 2019?
How to test the equality of two Pearson correlation coefficients computed from the same sample?
Can the prologue be the backstory of your main character?
how can a perfect fourth interval be considered either consonant or dissonant?
Is it ethical to upload a automatically generated paper to a non peer-reviewed site as part of a larger research?
Working through the single responsibility principle (SRP) in Python when calls are expensive
Sort a list of pairs representing an acyclic, partial automorphism
Did God make two great lights or did He make the great light two?
Can a novice safely splice in wire to lengthen 5V charging cable?
Typeface like Times New Roman but with "tied" percent sign
How should I replace vector<uint8_t>::const_iterator in an API?
Difference between "generating set" and free product?
Can smartphones with the same camera sensor have different image quality?
What information about me do stores get via my credit card?
Was credit for the black hole image misattributed?
Match Roman Numerals
Do working physicists consider Newtonian mechanics to be "falsified"?
How to test what shell I am using in a terminal?
The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
2019 Community Moderator Election ResultsDetermine current shell nameHow to detect the command interpreter from within a shell script?Is there a general command to see what shell is running?How can I check which shell I am currently using?determine shell in script during runtimeDifference between “echo $SHELL” and “which bash”How do I *reliably* and *simply* get the current shell interpreter name?POSIX-compatible/cross-shell way to get version of running shell?ssh behavior for root and non-root usercannot get scripts to run in a Lubuntu (Xenial) Minimal (+LXDE) VM with shebangsHow can I check which shell I am currently using?Determine current shell nameHow to send input in a new terminal using Shell Scriptis the shell a frontend to the terminal?Source shell script automatically in terminalWhat exactly is terminal? What is shell?Error command test shell linuxHow does the Terminal and the Shell exchange data?Open multiple terminal but without closing the previous one using shell scriptUbuntu multiple terminal shell configuration
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
How to check what shell I am using in a terminal? What is the shell I am using in MacOS?
shell
add a comment |
How to check what shell I am using in a terminal? What is the shell I am using in MacOS?
shell
2
@xenoterracide: at least unix.stackexchange.com/questions/3645/… . geekosaur's answer is more complete, so i voted to close the earlier question.
– Gilles
Mar 30 '11 at 17:33
1
echo $SHELL, no?
– innocent-world
Aug 23 '13 at 11:49
@innocent-world No,echo #SHELL
is not quite it. See # 3 in the Answer by geekosaur.
– Basil Bourque
Feb 4 '17 at 23:18
I am not so sure that "shell" has a well defined meaning. For example, you might runxterm -e /bin/cat
but I am not happy calling/bin/cat
a shell.
– Basile Starynkevitch
Aug 24 '17 at 10:26
Also some shells (like scsh) dont use POSIX shell like syntax.
– Basile Starynkevitch
Aug 24 '17 at 10:30
add a comment |
How to check what shell I am using in a terminal? What is the shell I am using in MacOS?
shell
How to check what shell I am using in a terminal? What is the shell I am using in MacOS?
shell
shell
edited Mar 18 '11 at 2:09
Michael Mrozek♦
62.4k29194214
62.4k29194214
asked Mar 18 '11 at 2:00
user5837user5837
426144
426144
2
@xenoterracide: at least unix.stackexchange.com/questions/3645/… . geekosaur's answer is more complete, so i voted to close the earlier question.
– Gilles
Mar 30 '11 at 17:33
1
echo $SHELL, no?
– innocent-world
Aug 23 '13 at 11:49
@innocent-world No,echo #SHELL
is not quite it. See # 3 in the Answer by geekosaur.
– Basil Bourque
Feb 4 '17 at 23:18
I am not so sure that "shell" has a well defined meaning. For example, you might runxterm -e /bin/cat
but I am not happy calling/bin/cat
a shell.
– Basile Starynkevitch
Aug 24 '17 at 10:26
Also some shells (like scsh) dont use POSIX shell like syntax.
– Basile Starynkevitch
Aug 24 '17 at 10:30
add a comment |
2
@xenoterracide: at least unix.stackexchange.com/questions/3645/… . geekosaur's answer is more complete, so i voted to close the earlier question.
– Gilles
Mar 30 '11 at 17:33
1
echo $SHELL, no?
– innocent-world
Aug 23 '13 at 11:49
@innocent-world No,echo #SHELL
is not quite it. See # 3 in the Answer by geekosaur.
– Basil Bourque
Feb 4 '17 at 23:18
I am not so sure that "shell" has a well defined meaning. For example, you might runxterm -e /bin/cat
but I am not happy calling/bin/cat
a shell.
– Basile Starynkevitch
Aug 24 '17 at 10:26
Also some shells (like scsh) dont use POSIX shell like syntax.
– Basile Starynkevitch
Aug 24 '17 at 10:30
2
2
@xenoterracide: at least unix.stackexchange.com/questions/3645/… . geekosaur's answer is more complete, so i voted to close the earlier question.
– Gilles
Mar 30 '11 at 17:33
@xenoterracide: at least unix.stackexchange.com/questions/3645/… . geekosaur's answer is more complete, so i voted to close the earlier question.
– Gilles
Mar 30 '11 at 17:33
1
1
echo $SHELL, no?
– innocent-world
Aug 23 '13 at 11:49
echo $SHELL, no?
– innocent-world
Aug 23 '13 at 11:49
@innocent-world No,
echo #SHELL
is not quite it. See # 3 in the Answer by geekosaur.– Basil Bourque
Feb 4 '17 at 23:18
@innocent-world No,
echo #SHELL
is not quite it. See # 3 in the Answer by geekosaur.– Basil Bourque
Feb 4 '17 at 23:18
I am not so sure that "shell" has a well defined meaning. For example, you might run
xterm -e /bin/cat
but I am not happy calling /bin/cat
a shell.– Basile Starynkevitch
Aug 24 '17 at 10:26
I am not so sure that "shell" has a well defined meaning. For example, you might run
xterm -e /bin/cat
but I am not happy calling /bin/cat
a shell.– Basile Starynkevitch
Aug 24 '17 at 10:26
Also some shells (like scsh) dont use POSIX shell like syntax.
– Basile Starynkevitch
Aug 24 '17 at 10:30
Also some shells (like scsh) dont use POSIX shell like syntax.
– Basile Starynkevitch
Aug 24 '17 at 10:30
add a comment |
11 Answers
11
active
oldest
votes
Several ways, from most to least reliable (and most-to-least "heavy"):
ps -p$$ -ocmd=
. (On Solaris, this may need to befname
instead ofcmd
. On OSX and on BSD should becommand
instead ofcmd
.)- Check for
$BASH_VERSION
,$ZSH_VERSION
, and other shell-specific variables. - Check
$SHELL
; this is a last resort, as it specifies your default shell and not necessarily the current shell.
3
Should you mention$0
too?
– Mikel
Mar 18 '11 at 2:41
I don't like$0
because it's more complicated: (1) it may be just the basename, (2) it may have '-' on the front to designate it as a login shell.
– geekosaur
Mar 18 '11 at 2:44
ps -p$$ -ocmd=""
is prettier :-)
– asoundmove
Mar 18 '11 at 3:51
1
@geekosaur: maybe so, but$0
still seems more useful than$SHELL
: wouldn't you agree? You could always pipe it throughsed
to remove the '-'.
– iconoclast
Aug 29 '12 at 21:49
2
If you're runningtcsh
,$tcsh
and$version
will be set. These are shell variables, not environment variables. If you're running a non-tcsh version ofcsh
, I don't think there are any distinctive variables. And of course the syntax used to check variables differs between csh/tcsh on the one hand, and sh/ksh/bash/zsh on the other.
– Keith Thompson
Mar 18 '14 at 1:51
|
show 2 more comments
I've found that the following works in the four shells I have installed on my system (bash, dash, zsh, csh):
$ ps -p $$
The following works on zsh, bash, and dash, but not on csh:
$ echo $0
2
Also does not work on fish.
– Ron E
Aug 7 '16 at 15:27
I think that @jiliagre's answer is probably would I would use today. On fish%self
can be used in place of$$
– Steven D
Aug 27 '16 at 23:00
add a comment |
As the question asks for the shell used and does not talk about the potential arguments passed to it, here is a way that avoid showing them:
$ ps -o comm= -p $$
ksh93
add a comment |
A note about some lighter implementations (Android phones, busybox, etc.): ps
doesn't always have support for the -p
switch, but you can accomplish the search with a command like ps | grep "^$$ "
. (This grep
regex will uniquely identify the PID, so there will not be any false positives.
7
ps | grep $$
can still give false positives if, for example, your current process is1234
and there's a process12345
.
– Keith Thompson
Mar 18 '14 at 1:48
add a comment |
There are two really simple ways:
Using ps command:
ps -o comm= $$
or
ps -h -o comm -p $$
where:
-h
or finishing all options with=
for not showing any header.-o comm
for showing only the process basename (bash
instead of/bin/bash
).-p <PID>
list only process whith PID form list suplied.
Using the /proc process information pseudo-file system:
cat /proc/$$/comm
This option behaves exactly as the
ps
command above.or
readlink /proc/$$/exe
This
/proc/PID/exe
links to the file being executed, which in this case would point to /bin/bash, /bin/ksh, etc.For getting only the name of the shell you can just use
basename $(readlink /proc/$$/exe)
This is the only option that will always give the same result even if you are in an script, sourced code, or terminal, as links to the binary of the shell interpreter in use.
Warning You must be aware that this will show the ultimate binary, so ksh may be linked to ksh93 or sh to bash.
The usage of /proc
is really useful via the /proc/self
, which links to the PID of the current command.
add a comment |
A mix of all the other answers, compatible with Mac (comm), Solaris (fname) and Linux (cmd):
ps -p$$ -o cmd="",comm="",fname="" 2>/dev/null | sed 's/^-//' | grep -oE 'w+' | head -n1
this gives me my current directory name; also, undercsh
andtcsh
it gives meAmbiguous output redirect.
– iconoclast
Aug 7 '15 at 0:17
add a comment |
If you have it saved in your environment variables you can use the following:
echo $SHELL
That will most likely return the pathname of the shell executable of your login shell. It is not certain that the login shell is what you are currently running though.
– Kusalananda♦
Apr 10 at 6:39
add a comment |
The pid of the running shell is given by the var $$ (in most shells).
whichsh="`ps -o pid,args| awk '$1=='"$$"'print $2'`"
echo "$whichsh"
Using backticks to make jsh (Heirlomm shell) work.
In many shells the direct test of ps -o args= -p $$
works, but busybox ash
fails on that (solved).
The check that $1
must be equal to $$
removes most false positives.
The last ;:
are used to keep the shell running for ksh and zsh.
Tests on more systems will help, please make a comment if it doesn't work for you.
Does not work in csh
type of shells.
On OS/X, in my tests, I get at least 3 lines, one for the shell, one for/usr/lib/dyld
, one for/private/var/db/dyld/dyld_shared_cache_x86_64
.
– Stéphane Chazelas
Sep 7 '15 at 16:12
Yes, it now only selects the entries in /bin and /usr/bin
– Stéphane Chazelas
Sep 8 '15 at 9:57
@StéphaneChazelas Maybe it is better now?
– user79743
Feb 25 '16 at 22:29
add a comment |
I set $MYSHELL
for future tests in my shell-agnostic ~/.aliases
:
unset MYSHELL
if [ -n "$ZSH_VERSION" ] && type zstyle >/dev/null 2>&1; then # zsh
MYSHELL=`command -v zsh`
elif [ -x "$BASH" ] && shopt -q >/dev/null 2>&1; then # bash
MYSHELL=`command -v bash`
elif [ -x "$shell" ] && which setenv |grep builtin >/dev/null; then # tcsh
echo "DANGER: this script is likely not compatible with C shells!"
sleep 5
setenv MYSHELL "$shell"
fi
# verify
if [ ! -x "$MYSHELL" ]; then
MYSHELL=`command -v "$(ps $$ |awk 'NR == 2 print $NF ')"`
[ -x "$MYSHELL" ] || MYSHELL="$SHELL:-/bin/sh" # default if verify fails
fi
The tcsh
section is likely unwise to roll into a POSIX-style script since it's so radically different (thus the warning and five second pause). (For one, csh
-style shells can't do 2>/dev/null
or >&2
, as noted in the famous Csh Programming Considered Harmful rant.)
add a comment |
You can simply use echo $0
command to check which shell you are using and <name_of_the_shell> --version
to check the version of the shell. (eg. bash --version
).
Steven D already mentioned it : )
– lese
Dec 4 '15 at 9:08
add a comment |
This works too:
env | grep SHELL
3
Or not. See point 3. in geekosaur's answer.
– manatwork
Mar 14 '12 at 17:02
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f9501%2fhow-to-test-what-shell-i-am-using-in-a-terminal%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
11 Answers
11
active
oldest
votes
11 Answers
11
active
oldest
votes
active
oldest
votes
active
oldest
votes
Several ways, from most to least reliable (and most-to-least "heavy"):
ps -p$$ -ocmd=
. (On Solaris, this may need to befname
instead ofcmd
. On OSX and on BSD should becommand
instead ofcmd
.)- Check for
$BASH_VERSION
,$ZSH_VERSION
, and other shell-specific variables. - Check
$SHELL
; this is a last resort, as it specifies your default shell and not necessarily the current shell.
3
Should you mention$0
too?
– Mikel
Mar 18 '11 at 2:41
I don't like$0
because it's more complicated: (1) it may be just the basename, (2) it may have '-' on the front to designate it as a login shell.
– geekosaur
Mar 18 '11 at 2:44
ps -p$$ -ocmd=""
is prettier :-)
– asoundmove
Mar 18 '11 at 3:51
1
@geekosaur: maybe so, but$0
still seems more useful than$SHELL
: wouldn't you agree? You could always pipe it throughsed
to remove the '-'.
– iconoclast
Aug 29 '12 at 21:49
2
If you're runningtcsh
,$tcsh
and$version
will be set. These are shell variables, not environment variables. If you're running a non-tcsh version ofcsh
, I don't think there are any distinctive variables. And of course the syntax used to check variables differs between csh/tcsh on the one hand, and sh/ksh/bash/zsh on the other.
– Keith Thompson
Mar 18 '14 at 1:51
|
show 2 more comments
Several ways, from most to least reliable (and most-to-least "heavy"):
ps -p$$ -ocmd=
. (On Solaris, this may need to befname
instead ofcmd
. On OSX and on BSD should becommand
instead ofcmd
.)- Check for
$BASH_VERSION
,$ZSH_VERSION
, and other shell-specific variables. - Check
$SHELL
; this is a last resort, as it specifies your default shell and not necessarily the current shell.
3
Should you mention$0
too?
– Mikel
Mar 18 '11 at 2:41
I don't like$0
because it's more complicated: (1) it may be just the basename, (2) it may have '-' on the front to designate it as a login shell.
– geekosaur
Mar 18 '11 at 2:44
ps -p$$ -ocmd=""
is prettier :-)
– asoundmove
Mar 18 '11 at 3:51
1
@geekosaur: maybe so, but$0
still seems more useful than$SHELL
: wouldn't you agree? You could always pipe it throughsed
to remove the '-'.
– iconoclast
Aug 29 '12 at 21:49
2
If you're runningtcsh
,$tcsh
and$version
will be set. These are shell variables, not environment variables. If you're running a non-tcsh version ofcsh
, I don't think there are any distinctive variables. And of course the syntax used to check variables differs between csh/tcsh on the one hand, and sh/ksh/bash/zsh on the other.
– Keith Thompson
Mar 18 '14 at 1:51
|
show 2 more comments
Several ways, from most to least reliable (and most-to-least "heavy"):
ps -p$$ -ocmd=
. (On Solaris, this may need to befname
instead ofcmd
. On OSX and on BSD should becommand
instead ofcmd
.)- Check for
$BASH_VERSION
,$ZSH_VERSION
, and other shell-specific variables. - Check
$SHELL
; this is a last resort, as it specifies your default shell and not necessarily the current shell.
Several ways, from most to least reliable (and most-to-least "heavy"):
ps -p$$ -ocmd=
. (On Solaris, this may need to befname
instead ofcmd
. On OSX and on BSD should becommand
instead ofcmd
.)- Check for
$BASH_VERSION
,$ZSH_VERSION
, and other shell-specific variables. - Check
$SHELL
; this is a last resort, as it specifies your default shell and not necessarily the current shell.
edited Jul 30 '15 at 13:50
Evgeny Vereshchagin
3,37242337
3,37242337
answered Mar 18 '11 at 2:12
geekosaurgeekosaur
23.1k36053
23.1k36053
3
Should you mention$0
too?
– Mikel
Mar 18 '11 at 2:41
I don't like$0
because it's more complicated: (1) it may be just the basename, (2) it may have '-' on the front to designate it as a login shell.
– geekosaur
Mar 18 '11 at 2:44
ps -p$$ -ocmd=""
is prettier :-)
– asoundmove
Mar 18 '11 at 3:51
1
@geekosaur: maybe so, but$0
still seems more useful than$SHELL
: wouldn't you agree? You could always pipe it throughsed
to remove the '-'.
– iconoclast
Aug 29 '12 at 21:49
2
If you're runningtcsh
,$tcsh
and$version
will be set. These are shell variables, not environment variables. If you're running a non-tcsh version ofcsh
, I don't think there are any distinctive variables. And of course the syntax used to check variables differs between csh/tcsh on the one hand, and sh/ksh/bash/zsh on the other.
– Keith Thompson
Mar 18 '14 at 1:51
|
show 2 more comments
3
Should you mention$0
too?
– Mikel
Mar 18 '11 at 2:41
I don't like$0
because it's more complicated: (1) it may be just the basename, (2) it may have '-' on the front to designate it as a login shell.
– geekosaur
Mar 18 '11 at 2:44
ps -p$$ -ocmd=""
is prettier :-)
– asoundmove
Mar 18 '11 at 3:51
1
@geekosaur: maybe so, but$0
still seems more useful than$SHELL
: wouldn't you agree? You could always pipe it throughsed
to remove the '-'.
– iconoclast
Aug 29 '12 at 21:49
2
If you're runningtcsh
,$tcsh
and$version
will be set. These are shell variables, not environment variables. If you're running a non-tcsh version ofcsh
, I don't think there are any distinctive variables. And of course the syntax used to check variables differs between csh/tcsh on the one hand, and sh/ksh/bash/zsh on the other.
– Keith Thompson
Mar 18 '14 at 1:51
3
3
Should you mention
$0
too?– Mikel
Mar 18 '11 at 2:41
Should you mention
$0
too?– Mikel
Mar 18 '11 at 2:41
I don't like
$0
because it's more complicated: (1) it may be just the basename, (2) it may have '-' on the front to designate it as a login shell.– geekosaur
Mar 18 '11 at 2:44
I don't like
$0
because it's more complicated: (1) it may be just the basename, (2) it may have '-' on the front to designate it as a login shell.– geekosaur
Mar 18 '11 at 2:44
ps -p$$ -ocmd=""
is prettier :-)– asoundmove
Mar 18 '11 at 3:51
ps -p$$ -ocmd=""
is prettier :-)– asoundmove
Mar 18 '11 at 3:51
1
1
@geekosaur: maybe so, but
$0
still seems more useful than $SHELL
: wouldn't you agree? You could always pipe it through sed
to remove the '-'.– iconoclast
Aug 29 '12 at 21:49
@geekosaur: maybe so, but
$0
still seems more useful than $SHELL
: wouldn't you agree? You could always pipe it through sed
to remove the '-'.– iconoclast
Aug 29 '12 at 21:49
2
2
If you're running
tcsh
, $tcsh
and $version
will be set. These are shell variables, not environment variables. If you're running a non-tcsh version of csh
, I don't think there are any distinctive variables. And of course the syntax used to check variables differs between csh/tcsh on the one hand, and sh/ksh/bash/zsh on the other.– Keith Thompson
Mar 18 '14 at 1:51
If you're running
tcsh
, $tcsh
and $version
will be set. These are shell variables, not environment variables. If you're running a non-tcsh version of csh
, I don't think there are any distinctive variables. And of course the syntax used to check variables differs between csh/tcsh on the one hand, and sh/ksh/bash/zsh on the other.– Keith Thompson
Mar 18 '14 at 1:51
|
show 2 more comments
I've found that the following works in the four shells I have installed on my system (bash, dash, zsh, csh):
$ ps -p $$
The following works on zsh, bash, and dash, but not on csh:
$ echo $0
2
Also does not work on fish.
– Ron E
Aug 7 '16 at 15:27
I think that @jiliagre's answer is probably would I would use today. On fish%self
can be used in place of$$
– Steven D
Aug 27 '16 at 23:00
add a comment |
I've found that the following works in the four shells I have installed on my system (bash, dash, zsh, csh):
$ ps -p $$
The following works on zsh, bash, and dash, but not on csh:
$ echo $0
2
Also does not work on fish.
– Ron E
Aug 7 '16 at 15:27
I think that @jiliagre's answer is probably would I would use today. On fish%self
can be used in place of$$
– Steven D
Aug 27 '16 at 23:00
add a comment |
I've found that the following works in the four shells I have installed on my system (bash, dash, zsh, csh):
$ ps -p $$
The following works on zsh, bash, and dash, but not on csh:
$ echo $0
I've found that the following works in the four shells I have installed on my system (bash, dash, zsh, csh):
$ ps -p $$
The following works on zsh, bash, and dash, but not on csh:
$ echo $0
answered Oct 30 '10 at 20:06
Steven DSteven D
32.9k898108
32.9k898108
2
Also does not work on fish.
– Ron E
Aug 7 '16 at 15:27
I think that @jiliagre's answer is probably would I would use today. On fish%self
can be used in place of$$
– Steven D
Aug 27 '16 at 23:00
add a comment |
2
Also does not work on fish.
– Ron E
Aug 7 '16 at 15:27
I think that @jiliagre's answer is probably would I would use today. On fish%self
can be used in place of$$
– Steven D
Aug 27 '16 at 23:00
2
2
Also does not work on fish.
– Ron E
Aug 7 '16 at 15:27
Also does not work on fish.
– Ron E
Aug 7 '16 at 15:27
I think that @jiliagre's answer is probably would I would use today. On fish
%self
can be used in place of $$
– Steven D
Aug 27 '16 at 23:00
I think that @jiliagre's answer is probably would I would use today. On fish
%self
can be used in place of $$
– Steven D
Aug 27 '16 at 23:00
add a comment |
As the question asks for the shell used and does not talk about the potential arguments passed to it, here is a way that avoid showing them:
$ ps -o comm= -p $$
ksh93
add a comment |
As the question asks for the shell used and does not talk about the potential arguments passed to it, here is a way that avoid showing them:
$ ps -o comm= -p $$
ksh93
add a comment |
As the question asks for the shell used and does not talk about the potential arguments passed to it, here is a way that avoid showing them:
$ ps -o comm= -p $$
ksh93
As the question asks for the shell used and does not talk about the potential arguments passed to it, here is a way that avoid showing them:
$ ps -o comm= -p $$
ksh93
answered May 16 '13 at 0:33
jlliagrejlliagre
47.9k786138
47.9k786138
add a comment |
add a comment |
A note about some lighter implementations (Android phones, busybox, etc.): ps
doesn't always have support for the -p
switch, but you can accomplish the search with a command like ps | grep "^$$ "
. (This grep
regex will uniquely identify the PID, so there will not be any false positives.
7
ps | grep $$
can still give false positives if, for example, your current process is1234
and there's a process12345
.
– Keith Thompson
Mar 18 '14 at 1:48
add a comment |
A note about some lighter implementations (Android phones, busybox, etc.): ps
doesn't always have support for the -p
switch, but you can accomplish the search with a command like ps | grep "^$$ "
. (This grep
regex will uniquely identify the PID, so there will not be any false positives.
7
ps | grep $$
can still give false positives if, for example, your current process is1234
and there's a process12345
.
– Keith Thompson
Mar 18 '14 at 1:48
add a comment |
A note about some lighter implementations (Android phones, busybox, etc.): ps
doesn't always have support for the -p
switch, but you can accomplish the search with a command like ps | grep "^$$ "
. (This grep
regex will uniquely identify the PID, so there will not be any false positives.
A note about some lighter implementations (Android phones, busybox, etc.): ps
doesn't always have support for the -p
switch, but you can accomplish the search with a command like ps | grep "^$$ "
. (This grep
regex will uniquely identify the PID, so there will not be any false positives.
edited Sep 21 '17 at 21:03
go2null
1755
1755
answered Feb 2 '12 at 21:03
palswimpalswim
1,74111734
1,74111734
7
ps | grep $$
can still give false positives if, for example, your current process is1234
and there's a process12345
.
– Keith Thompson
Mar 18 '14 at 1:48
add a comment |
7
ps | grep $$
can still give false positives if, for example, your current process is1234
and there's a process12345
.
– Keith Thompson
Mar 18 '14 at 1:48
7
7
ps | grep $$
can still give false positives if, for example, your current process is 1234
and there's a process 12345
.– Keith Thompson
Mar 18 '14 at 1:48
ps | grep $$
can still give false positives if, for example, your current process is 1234
and there's a process 12345
.– Keith Thompson
Mar 18 '14 at 1:48
add a comment |
There are two really simple ways:
Using ps command:
ps -o comm= $$
or
ps -h -o comm -p $$
where:
-h
or finishing all options with=
for not showing any header.-o comm
for showing only the process basename (bash
instead of/bin/bash
).-p <PID>
list only process whith PID form list suplied.
Using the /proc process information pseudo-file system:
cat /proc/$$/comm
This option behaves exactly as the
ps
command above.or
readlink /proc/$$/exe
This
/proc/PID/exe
links to the file being executed, which in this case would point to /bin/bash, /bin/ksh, etc.For getting only the name of the shell you can just use
basename $(readlink /proc/$$/exe)
This is the only option that will always give the same result even if you are in an script, sourced code, or terminal, as links to the binary of the shell interpreter in use.
Warning You must be aware that this will show the ultimate binary, so ksh may be linked to ksh93 or sh to bash.
The usage of /proc
is really useful via the /proc/self
, which links to the PID of the current command.
add a comment |
There are two really simple ways:
Using ps command:
ps -o comm= $$
or
ps -h -o comm -p $$
where:
-h
or finishing all options with=
for not showing any header.-o comm
for showing only the process basename (bash
instead of/bin/bash
).-p <PID>
list only process whith PID form list suplied.
Using the /proc process information pseudo-file system:
cat /proc/$$/comm
This option behaves exactly as the
ps
command above.or
readlink /proc/$$/exe
This
/proc/PID/exe
links to the file being executed, which in this case would point to /bin/bash, /bin/ksh, etc.For getting only the name of the shell you can just use
basename $(readlink /proc/$$/exe)
This is the only option that will always give the same result even if you are in an script, sourced code, or terminal, as links to the binary of the shell interpreter in use.
Warning You must be aware that this will show the ultimate binary, so ksh may be linked to ksh93 or sh to bash.
The usage of /proc
is really useful via the /proc/self
, which links to the PID of the current command.
add a comment |
There are two really simple ways:
Using ps command:
ps -o comm= $$
or
ps -h -o comm -p $$
where:
-h
or finishing all options with=
for not showing any header.-o comm
for showing only the process basename (bash
instead of/bin/bash
).-p <PID>
list only process whith PID form list suplied.
Using the /proc process information pseudo-file system:
cat /proc/$$/comm
This option behaves exactly as the
ps
command above.or
readlink /proc/$$/exe
This
/proc/PID/exe
links to the file being executed, which in this case would point to /bin/bash, /bin/ksh, etc.For getting only the name of the shell you can just use
basename $(readlink /proc/$$/exe)
This is the only option that will always give the same result even if you are in an script, sourced code, or terminal, as links to the binary of the shell interpreter in use.
Warning You must be aware that this will show the ultimate binary, so ksh may be linked to ksh93 or sh to bash.
The usage of /proc
is really useful via the /proc/self
, which links to the PID of the current command.
There are two really simple ways:
Using ps command:
ps -o comm= $$
or
ps -h -o comm -p $$
where:
-h
or finishing all options with=
for not showing any header.-o comm
for showing only the process basename (bash
instead of/bin/bash
).-p <PID>
list only process whith PID form list suplied.
Using the /proc process information pseudo-file system:
cat /proc/$$/comm
This option behaves exactly as the
ps
command above.or
readlink /proc/$$/exe
This
/proc/PID/exe
links to the file being executed, which in this case would point to /bin/bash, /bin/ksh, etc.For getting only the name of the shell you can just use
basename $(readlink /proc/$$/exe)
This is the only option that will always give the same result even if you are in an script, sourced code, or terminal, as links to the binary of the shell interpreter in use.
Warning You must be aware that this will show the ultimate binary, so ksh may be linked to ksh93 or sh to bash.
The usage of /proc
is really useful via the /proc/self
, which links to the PID of the current command.
edited Jul 6 '18 at 23:50
Jeff Schaller♦
45k1164147
45k1164147
answered Aug 24 '17 at 10:18
David GoitiaDavid Goitia
664
664
add a comment |
add a comment |
A mix of all the other answers, compatible with Mac (comm), Solaris (fname) and Linux (cmd):
ps -p$$ -o cmd="",comm="",fname="" 2>/dev/null | sed 's/^-//' | grep -oE 'w+' | head -n1
this gives me my current directory name; also, undercsh
andtcsh
it gives meAmbiguous output redirect.
– iconoclast
Aug 7 '15 at 0:17
add a comment |
A mix of all the other answers, compatible with Mac (comm), Solaris (fname) and Linux (cmd):
ps -p$$ -o cmd="",comm="",fname="" 2>/dev/null | sed 's/^-//' | grep -oE 'w+' | head -n1
this gives me my current directory name; also, undercsh
andtcsh
it gives meAmbiguous output redirect.
– iconoclast
Aug 7 '15 at 0:17
add a comment |
A mix of all the other answers, compatible with Mac (comm), Solaris (fname) and Linux (cmd):
ps -p$$ -o cmd="",comm="",fname="" 2>/dev/null | sed 's/^-//' | grep -oE 'w+' | head -n1
A mix of all the other answers, compatible with Mac (comm), Solaris (fname) and Linux (cmd):
ps -p$$ -o cmd="",comm="",fname="" 2>/dev/null | sed 's/^-//' | grep -oE 'w+' | head -n1
edited Mar 19 '14 at 19:02
answered Mar 18 '14 at 0:23
sebastiensebastien
1313
1313
this gives me my current directory name; also, undercsh
andtcsh
it gives meAmbiguous output redirect.
– iconoclast
Aug 7 '15 at 0:17
add a comment |
this gives me my current directory name; also, undercsh
andtcsh
it gives meAmbiguous output redirect.
– iconoclast
Aug 7 '15 at 0:17
this gives me my current directory name; also, under
csh
and tcsh
it gives me Ambiguous output redirect.
– iconoclast
Aug 7 '15 at 0:17
this gives me my current directory name; also, under
csh
and tcsh
it gives me Ambiguous output redirect.
– iconoclast
Aug 7 '15 at 0:17
add a comment |
If you have it saved in your environment variables you can use the following:
echo $SHELL
That will most likely return the pathname of the shell executable of your login shell. It is not certain that the login shell is what you are currently running though.
– Kusalananda♦
Apr 10 at 6:39
add a comment |
If you have it saved in your environment variables you can use the following:
echo $SHELL
That will most likely return the pathname of the shell executable of your login shell. It is not certain that the login shell is what you are currently running though.
– Kusalananda♦
Apr 10 at 6:39
add a comment |
If you have it saved in your environment variables you can use the following:
echo $SHELL
If you have it saved in your environment variables you can use the following:
echo $SHELL
edited Apr 10 at 6:40
muru
37.6k589165
37.6k589165
answered May 21 '18 at 23:48
jasonleonhardjasonleonhard
1236
1236
That will most likely return the pathname of the shell executable of your login shell. It is not certain that the login shell is what you are currently running though.
– Kusalananda♦
Apr 10 at 6:39
add a comment |
That will most likely return the pathname of the shell executable of your login shell. It is not certain that the login shell is what you are currently running though.
– Kusalananda♦
Apr 10 at 6:39
That will most likely return the pathname of the shell executable of your login shell. It is not certain that the login shell is what you are currently running though.
– Kusalananda♦
Apr 10 at 6:39
That will most likely return the pathname of the shell executable of your login shell. It is not certain that the login shell is what you are currently running though.
– Kusalananda♦
Apr 10 at 6:39
add a comment |
The pid of the running shell is given by the var $$ (in most shells).
whichsh="`ps -o pid,args| awk '$1=='"$$"'print $2'`"
echo "$whichsh"
Using backticks to make jsh (Heirlomm shell) work.
In many shells the direct test of ps -o args= -p $$
works, but busybox ash
fails on that (solved).
The check that $1
must be equal to $$
removes most false positives.
The last ;:
are used to keep the shell running for ksh and zsh.
Tests on more systems will help, please make a comment if it doesn't work for you.
Does not work in csh
type of shells.
On OS/X, in my tests, I get at least 3 lines, one for the shell, one for/usr/lib/dyld
, one for/private/var/db/dyld/dyld_shared_cache_x86_64
.
– Stéphane Chazelas
Sep 7 '15 at 16:12
Yes, it now only selects the entries in /bin and /usr/bin
– Stéphane Chazelas
Sep 8 '15 at 9:57
@StéphaneChazelas Maybe it is better now?
– user79743
Feb 25 '16 at 22:29
add a comment |
The pid of the running shell is given by the var $$ (in most shells).
whichsh="`ps -o pid,args| awk '$1=='"$$"'print $2'`"
echo "$whichsh"
Using backticks to make jsh (Heirlomm shell) work.
In many shells the direct test of ps -o args= -p $$
works, but busybox ash
fails on that (solved).
The check that $1
must be equal to $$
removes most false positives.
The last ;:
are used to keep the shell running for ksh and zsh.
Tests on more systems will help, please make a comment if it doesn't work for you.
Does not work in csh
type of shells.
On OS/X, in my tests, I get at least 3 lines, one for the shell, one for/usr/lib/dyld
, one for/private/var/db/dyld/dyld_shared_cache_x86_64
.
– Stéphane Chazelas
Sep 7 '15 at 16:12
Yes, it now only selects the entries in /bin and /usr/bin
– Stéphane Chazelas
Sep 8 '15 at 9:57
@StéphaneChazelas Maybe it is better now?
– user79743
Feb 25 '16 at 22:29
add a comment |
The pid of the running shell is given by the var $$ (in most shells).
whichsh="`ps -o pid,args| awk '$1=='"$$"'print $2'`"
echo "$whichsh"
Using backticks to make jsh (Heirlomm shell) work.
In many shells the direct test of ps -o args= -p $$
works, but busybox ash
fails on that (solved).
The check that $1
must be equal to $$
removes most false positives.
The last ;:
are used to keep the shell running for ksh and zsh.
Tests on more systems will help, please make a comment if it doesn't work for you.
Does not work in csh
type of shells.
The pid of the running shell is given by the var $$ (in most shells).
whichsh="`ps -o pid,args| awk '$1=='"$$"'print $2'`"
echo "$whichsh"
Using backticks to make jsh (Heirlomm shell) work.
In many shells the direct test of ps -o args= -p $$
works, but busybox ash
fails on that (solved).
The check that $1
must be equal to $$
removes most false positives.
The last ;:
are used to keep the shell running for ksh and zsh.
Tests on more systems will help, please make a comment if it doesn't work for you.
Does not work in csh
type of shells.
edited Feb 25 '16 at 22:28
answered Sep 7 '15 at 15:53
user79743
On OS/X, in my tests, I get at least 3 lines, one for the shell, one for/usr/lib/dyld
, one for/private/var/db/dyld/dyld_shared_cache_x86_64
.
– Stéphane Chazelas
Sep 7 '15 at 16:12
Yes, it now only selects the entries in /bin and /usr/bin
– Stéphane Chazelas
Sep 8 '15 at 9:57
@StéphaneChazelas Maybe it is better now?
– user79743
Feb 25 '16 at 22:29
add a comment |
On OS/X, in my tests, I get at least 3 lines, one for the shell, one for/usr/lib/dyld
, one for/private/var/db/dyld/dyld_shared_cache_x86_64
.
– Stéphane Chazelas
Sep 7 '15 at 16:12
Yes, it now only selects the entries in /bin and /usr/bin
– Stéphane Chazelas
Sep 8 '15 at 9:57
@StéphaneChazelas Maybe it is better now?
– user79743
Feb 25 '16 at 22:29
On OS/X, in my tests, I get at least 3 lines, one for the shell, one for
/usr/lib/dyld
, one for /private/var/db/dyld/dyld_shared_cache_x86_64
.– Stéphane Chazelas
Sep 7 '15 at 16:12
On OS/X, in my tests, I get at least 3 lines, one for the shell, one for
/usr/lib/dyld
, one for /private/var/db/dyld/dyld_shared_cache_x86_64
.– Stéphane Chazelas
Sep 7 '15 at 16:12
Yes, it now only selects the entries in /bin and /usr/bin
– Stéphane Chazelas
Sep 8 '15 at 9:57
Yes, it now only selects the entries in /bin and /usr/bin
– Stéphane Chazelas
Sep 8 '15 at 9:57
@StéphaneChazelas Maybe it is better now?
– user79743
Feb 25 '16 at 22:29
@StéphaneChazelas Maybe it is better now?
– user79743
Feb 25 '16 at 22:29
add a comment |
I set $MYSHELL
for future tests in my shell-agnostic ~/.aliases
:
unset MYSHELL
if [ -n "$ZSH_VERSION" ] && type zstyle >/dev/null 2>&1; then # zsh
MYSHELL=`command -v zsh`
elif [ -x "$BASH" ] && shopt -q >/dev/null 2>&1; then # bash
MYSHELL=`command -v bash`
elif [ -x "$shell" ] && which setenv |grep builtin >/dev/null; then # tcsh
echo "DANGER: this script is likely not compatible with C shells!"
sleep 5
setenv MYSHELL "$shell"
fi
# verify
if [ ! -x "$MYSHELL" ]; then
MYSHELL=`command -v "$(ps $$ |awk 'NR == 2 print $NF ')"`
[ -x "$MYSHELL" ] || MYSHELL="$SHELL:-/bin/sh" # default if verify fails
fi
The tcsh
section is likely unwise to roll into a POSIX-style script since it's so radically different (thus the warning and five second pause). (For one, csh
-style shells can't do 2>/dev/null
or >&2
, as noted in the famous Csh Programming Considered Harmful rant.)
add a comment |
I set $MYSHELL
for future tests in my shell-agnostic ~/.aliases
:
unset MYSHELL
if [ -n "$ZSH_VERSION" ] && type zstyle >/dev/null 2>&1; then # zsh
MYSHELL=`command -v zsh`
elif [ -x "$BASH" ] && shopt -q >/dev/null 2>&1; then # bash
MYSHELL=`command -v bash`
elif [ -x "$shell" ] && which setenv |grep builtin >/dev/null; then # tcsh
echo "DANGER: this script is likely not compatible with C shells!"
sleep 5
setenv MYSHELL "$shell"
fi
# verify
if [ ! -x "$MYSHELL" ]; then
MYSHELL=`command -v "$(ps $$ |awk 'NR == 2 print $NF ')"`
[ -x "$MYSHELL" ] || MYSHELL="$SHELL:-/bin/sh" # default if verify fails
fi
The tcsh
section is likely unwise to roll into a POSIX-style script since it's so radically different (thus the warning and five second pause). (For one, csh
-style shells can't do 2>/dev/null
or >&2
, as noted in the famous Csh Programming Considered Harmful rant.)
add a comment |
I set $MYSHELL
for future tests in my shell-agnostic ~/.aliases
:
unset MYSHELL
if [ -n "$ZSH_VERSION" ] && type zstyle >/dev/null 2>&1; then # zsh
MYSHELL=`command -v zsh`
elif [ -x "$BASH" ] && shopt -q >/dev/null 2>&1; then # bash
MYSHELL=`command -v bash`
elif [ -x "$shell" ] && which setenv |grep builtin >/dev/null; then # tcsh
echo "DANGER: this script is likely not compatible with C shells!"
sleep 5
setenv MYSHELL "$shell"
fi
# verify
if [ ! -x "$MYSHELL" ]; then
MYSHELL=`command -v "$(ps $$ |awk 'NR == 2 print $NF ')"`
[ -x "$MYSHELL" ] || MYSHELL="$SHELL:-/bin/sh" # default if verify fails
fi
The tcsh
section is likely unwise to roll into a POSIX-style script since it's so radically different (thus the warning and five second pause). (For one, csh
-style shells can't do 2>/dev/null
or >&2
, as noted in the famous Csh Programming Considered Harmful rant.)
I set $MYSHELL
for future tests in my shell-agnostic ~/.aliases
:
unset MYSHELL
if [ -n "$ZSH_VERSION" ] && type zstyle >/dev/null 2>&1; then # zsh
MYSHELL=`command -v zsh`
elif [ -x "$BASH" ] && shopt -q >/dev/null 2>&1; then # bash
MYSHELL=`command -v bash`
elif [ -x "$shell" ] && which setenv |grep builtin >/dev/null; then # tcsh
echo "DANGER: this script is likely not compatible with C shells!"
sleep 5
setenv MYSHELL "$shell"
fi
# verify
if [ ! -x "$MYSHELL" ]; then
MYSHELL=`command -v "$(ps $$ |awk 'NR == 2 print $NF ')"`
[ -x "$MYSHELL" ] || MYSHELL="$SHELL:-/bin/sh" # default if verify fails
fi
The tcsh
section is likely unwise to roll into a POSIX-style script since it's so radically different (thus the warning and five second pause). (For one, csh
-style shells can't do 2>/dev/null
or >&2
, as noted in the famous Csh Programming Considered Harmful rant.)
edited Jan 15 '15 at 17:21
answered Jan 15 '15 at 16:52
Adam KatzAdam Katz
2,3001422
2,3001422
add a comment |
add a comment |
You can simply use echo $0
command to check which shell you are using and <name_of_the_shell> --version
to check the version of the shell. (eg. bash --version
).
Steven D already mentioned it : )
– lese
Dec 4 '15 at 9:08
add a comment |
You can simply use echo $0
command to check which shell you are using and <name_of_the_shell> --version
to check the version of the shell. (eg. bash --version
).
Steven D already mentioned it : )
– lese
Dec 4 '15 at 9:08
add a comment |
You can simply use echo $0
command to check which shell you are using and <name_of_the_shell> --version
to check the version of the shell. (eg. bash --version
).
You can simply use echo $0
command to check which shell you are using and <name_of_the_shell> --version
to check the version of the shell. (eg. bash --version
).
edited Dec 4 '15 at 9:21
Tejas
1,86422041
1,86422041
answered Dec 4 '15 at 8:30
Sachin CSachin C
1
1
Steven D already mentioned it : )
– lese
Dec 4 '15 at 9:08
add a comment |
Steven D already mentioned it : )
– lese
Dec 4 '15 at 9:08
Steven D already mentioned it : )
– lese
Dec 4 '15 at 9:08
Steven D already mentioned it : )
– lese
Dec 4 '15 at 9:08
add a comment |
This works too:
env | grep SHELL
3
Or not. See point 3. in geekosaur's answer.
– manatwork
Mar 14 '12 at 17:02
add a comment |
This works too:
env | grep SHELL
3
Or not. See point 3. in geekosaur's answer.
– manatwork
Mar 14 '12 at 17:02
add a comment |
This works too:
env | grep SHELL
This works too:
env | grep SHELL
edited Mar 14 '12 at 16:57
Michael Mrozek♦
62.4k29194214
62.4k29194214
answered Mar 14 '12 at 16:57
NikoNiko
1
1
3
Or not. See point 3. in geekosaur's answer.
– manatwork
Mar 14 '12 at 17:02
add a comment |
3
Or not. See point 3. in geekosaur's answer.
– manatwork
Mar 14 '12 at 17:02
3
3
Or not. See point 3. in geekosaur's answer.
– manatwork
Mar 14 '12 at 17:02
Or not. See point 3. in geekosaur's answer.
– manatwork
Mar 14 '12 at 17:02
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f9501%2fhow-to-test-what-shell-i-am-using-in-a-terminal%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
@xenoterracide: at least unix.stackexchange.com/questions/3645/… . geekosaur's answer is more complete, so i voted to close the earlier question.
– Gilles
Mar 30 '11 at 17:33
1
echo $SHELL, no?
– innocent-world
Aug 23 '13 at 11:49
@innocent-world No,
echo #SHELL
is not quite it. See # 3 in the Answer by geekosaur.– Basil Bourque
Feb 4 '17 at 23:18
I am not so sure that "shell" has a well defined meaning. For example, you might run
xterm -e /bin/cat
but I am not happy calling/bin/cat
a shell.– Basile Starynkevitch
Aug 24 '17 at 10:26
Also some shells (like scsh) dont use POSIX shell like syntax.
– Basile Starynkevitch
Aug 24 '17 at 10:30