Working with a User's Login Shell
Customizing the User Environment
A tremendous amount of customization is possible within the
command line environment. Some changes will be made to accommodate
Oracle; others will make it easier to use the system.
As you customize the shell to suit your needs, it is important to
consider all users who will be using a given login. When accounts
like Oracle need to be shared, consider if these customizationswill help or hinder other users who need to use the
account. Another consideration is whether you will become dependent
on the customizations and therefore, be seriously handicapped if
your customizations are not available for some reason, e.g. on a new
Most of these customizations are made on a user-by-user basis in
files that are read when a command line session is started. Since
the files that are read may depend on what shell a login is using,
this chapter will start with how to change a user's login shell.
The Login Shell
The login shellcontrols much
of how you interact with the system. Several shells are available
for use, and at first, they all seem very similar. They do, in
fact, all provide basically the same functionality, but as you
become a more advanced shell user, the differences will quickly
The default login shell on Linux is the Bourne-Again Shell (bash)which combines many desirable features while maintaining
compatibility with the popular Bourne shell (sh).Most users find bash to have a desirable combination of
flexibility, features and compatibility, but if you are more
comfortable with another shell or if you have software which
requires another shell, Linux allows you to easily change your login
A list of the valid shells on a system is maintained in the
/etc/shells file. The file can be viewed with the more command or
any text editor.
Some applications, like ftp daemons, will only allow access if a
user's login shell is listed in this file. If new shells are added,
it is important to list them in this file.
Regardless of which shell you choose as your login shell, I
strongly recommend using the same login shell on all your accounts,
if possible. This will assure that you have the commands and tools
you are comfortable with in each of your accounts.
What Shell Am I Using?
When you start a command line session, the variable SHELLis set to the login shell. This variable can be echoed
to check the current login shell.
This variable is only set when a command line session is started,
e.g. at initial login, or when su - is called to invoke a login
shell as another user, so it will not be updated if shells are
temporarily switched as described in the next section.
To check what shell is currently being run, regardless of whether
it was invoked at login or not or if it was switched into after,
check another shell variable, 0.
$ echo $0
This variable returns the name of the current running program.
It can be used within shell scripts
to print the name of the script, but in a shell session, it will
return the name of the shell.
Switching Shells Temporarily
Sometimes you may want to run in a different shell temporarily.
To accomplish that, just give the command for the shell you want to
enter. When you are done, type exit to return to your original
$ echo $0
$ echo $0
This is useful if a command or script must be run in a certain
shell, but do not permanently change the user's login shell.
Changing a User's Login Shell
The login shell for a user is set when the user is created. If
one is not specified, Linux will use the default bash shell. The
usermod commandallows the root
user to change a user's login shell after user creation.
# usermod -s
Note: The usermod
command does not confirm that the given shell is a valid
command or in the /etc/shells file. Make sure to give a
valid shell exactly as it appears in the /etc/shells file.
The usermod command changes the /etc/passwdfile to reflect the new shell. This shell will now be
used at login for the user jemmons.
Linux provides another method of changing the login shell which
does not require root privileges. The chsh commandcan be run by any user to change that user's login
Changing shell for jemmons.
New shell [/bin/ksh]: /bin/bash
The chsh command uses special setuid permissions to update the
/etc/passwd file which normally can only be edited by root. Unlike
usermod, chsh verifies that a shell is in the /etc/shells file
before changing the user's login shell. If a user is not sure what
shells are available, the chsh command can be called with the -l
option to view valid shells.
The Nologin Shell
There is an entry in the /etc/shells file for /sbin/nologin.
This entry is not a shell, but rather, is intended as a place keeper
for use with accounts that are disabled. Setting a user's shell to
nologin prevents them from being able to start a command line
session on the system but preserves the account for other purposes.
If an account needs to be completely disabled, it should be locked
using the usermod command as described in the previous chapter.
A common use of the nologin shell
is to assign it to a user who needs only ftp access to a system.
The user's account and password remain valid for FTP and possibly
other services, but if they try to connect to the system via SSH,
they receive a message that 'This account is currently not
Get the Complete Details on
Linux System Management for Oracle DBAs
The landmark book
"Linux for the Oracle DBA: The
provides comprehensive yet specific
knowledge on administering Oracle on Linux. A
must-have reference for every DBA running or planning to run
Oracle on a Linux platform.
for 30% off directly from the publisher.
Burleson is the American Team
documentation was created as a support and Oracle training reference for use by our
DBA performance tuning consulting professionals.
Feel free to ask questions on our
considering using the services of an Oracle support expert should
independently investigate their credentials and experience, and not rely on
advertisements and self-proclaimed expertise. All legitimate Oracle experts
Oracle technology is changing and we
strive to update our BC Oracle support information. If you find an error
or have a suggestion for improving our content, we would appreciate your
and include the URL for the page.
Copyright © 1996 - 2020
All rights reserved by
is the registered trademark of Oracle Corporation.