Jilliagre is right. E.g. bash sets SHELL to the user's default shell if not yet set.
The old Bourne shell does not do that, but these systems use the login program - that does it.
And you are right, too. Once SHELL is set (automatically or manually), many tools (e.g. shell-terminal) open this shell.
--
Traditionally /sbin contained statically-linked binaries. At that times /usr was a separate partition or even a separate disk. If /usr failed and the kernel could load from / then it was good to have statically linked tools under / , without the need of the /usr/lib/*.so
Indeed Solaris 9 and older have
Code:
% ls -l /bin/sh
-r-xr-xr-x 4 root root 95480 Nov 19 2008 /bin/sh
% ls -l /sbin/sh
-r-xr-xr-x 2 root root 306216 Nov 19 2008 /sbin/sh
% ldd /bin/sh
libgen.so.1 => /usr/lib/libgen.so.1
libsecdb.so.1 => /usr/lib/libsecdb.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libc.so.1 => /usr/lib/libc.so.1
libcmd.so.1 => /usr/lib/libcmd.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libmp.so.2 => /usr/lib/libmp.so.2
/usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1
% ldd /sbin/sh
ldd: /sbin/sh: file is not a dynamic executable or shared object
For each fix in one of the shared libraries Sun had to provide a new /sbin/sh (to also contain the fix). This was cumbersome.
Solaris 10 changed to
Code:
% ls -l /bin/sh
lrwxrwxrwx 1 root root 13 Nov 7 2011 /bin/sh -> ../../sbin/sh
And in Solaris 11 Oracle has given up the Bourne shell
Code:
% ls -l /bin/sh
lrwxrwxrwx 1 root root 9 Jun 17 2013 /bin/sh -> i86/ksh93
% ls -l /sbin/sh
lrwxrwxrwx 1 root root 16 Jun 17 2013 /sbin/sh -> ../bin/i86/ksh93
This User Gave Thanks to MadeInGermany For This Post:
This code has worked for years and still does in my production environment. But it's failing in my development environment now. The cd works but the creation of node1, jnum, and node2 fails. Oddly the output shows a line from from the awk script at the end of the code during the setting of each... (6 Replies)
Bourne: How to invoke an alias from within a shell script
If I type in the alias in the command line, it runs
If I insert that same alias into my shell script and run the shell script, the alias is not invoked.
Help please. (2 Replies)
Hi All,
PF below details,
> cat run.sh
#!/usr/bin/ksh
alias ll="ls -l"
> ./run.sh
> ll
ksh: ll: not found.
Pls help on this?
Thanks in Advance,
Naga :cool: (2 Replies)
Hello, I am trying to set an alias in my .kshrc or .profile and when I do it is not setting. If I do it manually it works fine. Is there another file I should put this in? Here is the alias I am using.
alias ll='ls -ltr'
I am using solaris 9. When I type alias it does not show these... (5 Replies)
Hi
My Unix sever is AIX 5.3. My Login shell ( using echo $SHELL) is /bin/sh implying it is a Bourne Shell. My Question is that i am still able to use Alias command to create/retrieve aliases. I have read in several sites on Unix online that the Bourne Shell does not support Aliases but... (12 Replies)
Iam facing some strange issue with alias. I have an alias file in which i have created lot of aliases as given below.
export BUILD_HOME=/apps/psr/build
export DB_HOME=/apps/psr/database
export LOGS_HOME=/apps/psr/logs
export BUILD_TEST=/apps/psr/build_dev/build_test
export... (0 Replies)
Hi,
I'm on Solaris (SunOS wsp2cm01 5.10 Generic_150400-10 sun4v sparc SUNW,Sun-Fire-T200). Trying to set up an alias like below -
alias grep="/usr/xpg4/bin/grep"but when I call grep in my command it ignores my alias & uses /usr/bin/grep instead. The problem with /usr/bin/grep is that it doesn't... (24 Replies)
I have several shell scripts which contain the nawk command.
Here is what i m doing assign the correct value to nawk as nawk is not found on a new systems.
Here is what i did.
more test.sh
] && alias nawk=/usr/bin/gawk
] && alias nawk=/usr/bin/nawk
] && alias nawk=/usr/bin/awk... (7 Replies)
I have a loop with cases
I am working on Bourne shell
for file in *.${Today}*.csv *.${Today}*.txt\
do
case ${file} in
sun_detail)
do something
;;
sum)
do something
;;
mod)
do something
;;
*)
do something
;; (5 Replies)
Hi,
I have the following aliases:
$: alias | grep "^du="
du='du -s * 2>/dev/null | awk '\''{ printf "%4.2f-KB ==> %s \n", $1/1024 , $2 }'\'' | sort -rn'
$: alias | grep "^dutop10="
dutop10='du -s * 2>/dev/null | awk '\''{ printf "%4.2f-KB ==> %s \n", $1/1024 , $2 }'\'' | sort -rn | head... (2 Replies)
Discussion started by: newbie_01
2 Replies
LEARN ABOUT OPENSOLARIS
getusershell
getusershell(3C) Standard C Library Functions getusershell(3C)NAME
getusershell, setusershell, endusershell - get legal user shells
SYNOPSIS
#include <unistd.h>
char *getusershell(void);
void setusershell(void);
void endusershell(void);
DESCRIPTION
The getusershell() function returns a pointer to a legal user shell as defined by the system manager in the file /etc/shells. If
/etc/shells does not exist, the following locations of the standard system shells are used in its place:
/bin/bash /bin/csh
/bin/jsh /bin/ksh
/bin/ksh93 /bin/pfcsh
/bin/pfksh /bin/pfsh
/bin/sh /bin/tcsh
/bin/zsh /sbin/jsh
/sbin/pfsh /sbin/sh
/usr/bin/bash /usr/bin/csh
/usr/bin/jsh /usr/bin/ksh
/usr/bin/ksh93 /usr/bin/pfcsh
/usr/bin/pfksh /usr/bin/pfsh
/usr/bin/sh /usr/bin/tcsh
/usr/bin/zsh /usr/sfw/bin/zsh
/usr/xpg4/bin/sh
The getusershell() function opens the file /etc/shells, if it exists, and returns the next entry in the list of shells.
The setusershell() function rewinds the file or the list.
The endusershell() function closes the file, frees any memory used by getusershell() and setusershell(), and rewinds the file /etc/shells.
RETURN VALUES
The getusershell() function returns a null pointer on EOF.
BUGS
All information is contained in memory that may be freed with a call to endusershell(), so it must be copied if it is to be saved.
NOTES
Restricted shells should not be listed in /etc/shells.
SunOS 5.11 1 Nov 2007 getusershell(3C)