Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
35 views

Shells, Shell Scripting, and The UNIX File System

This document discusses shells and shell scripting in UNIX systems. It provides an overview of common shells like tcsh, bash, and csh. It describes how shells act as an interface between the user and kernel by translating commands. It also discusses shell configuration files, environment variables, aliases, and customizing shells like tcsh through files like .cshrc. The document is intended to introduce basic shell concepts and commands.

Uploaded by

Deva
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

Shells, Shell Scripting, and The UNIX File System

This document discusses shells and shell scripting in UNIX systems. It provides an overview of common shells like tcsh, bash, and csh. It describes how shells act as an interface between the user and kernel by translating commands. It also discusses shell configuration files, environment variables, aliases, and customizing shells like tcsh through files like .cshrc. The document is intended to introduce basic shell concepts and commands.

Uploaded by

Deva
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 19

Shells, Shell Scripting,

and the
UNIX File System
CMSC 121 Introduction to UNIX

Much of the material in these slides was taken from


Dan Hood’s CMSC 121 Lecture Notes.
Shell Overview
What is a Shell?
 UNIX shells provide a "command line" interface which allows
the user to enter commands which are translated by the shell into
something the kernel can comprehend and then is sent off to the
kernel for it to act upon.
 The user can pick their shell (just like the applications, desktop
manger, window manager, etc. on a UNIX system).
UMBC Shells
 On the UMBC GL network, the default UNIX shell is tcsh -
Turbo C SHell. The default can be changed by the user via
http://accounts.umbc.edu/.
 Shells available on GL include:
 tcsh - Turbo C SHell
 csh - C SHell
 ksh - Korn SHell
 bash - Bourne Again SHell
 sh - SHell
Shell Overview
 Linux Default Shell
 Most Linux systems (especially home installations) default to
the bash shell.
 Changing Your Shell - On a Home Based System
 Usually there is a command called chsh that stands for
change shell. You have to enter your password and then the
absolute path to the new shell that you wish to use.
(06:08 PM): chsh
Changing shell for Eric.
Password: New shell [/bin/bash]: /bin/csh
Shell changed.
Aliasing Commands
 A helpful feature, especially for many users new to UNIX, is the
alias function.
 The alias command assigns a command, possibly with many
options and flags, to another name. Usually it is a shorter name
or one that is easier to remember.

Setting up an alias:
 The exact syntax depends on the shell that you are using. We will
cover how to do it under tcsh and bash. Most other shells use a
similar or identical syntax.
 tcsh syntax:
 alias <aliased name> <original command>
 bash syntax:
 alias <aliased name>=<original command>
Environment Variables
 Think of the shell as any other program that
you write. Your program maintains information
about its current state. Since the shell's main job
is to act as a liaison between the kernel and the
user, it maintains information about the
computing environment. The environment
variables hold this information.
Viewing Your Environment Variables
 Most UNIX systems provide a command env that will allow you to see all of these variables that the shell is
maintaining.
 Here is an example of the env command issued on one of the linix.gl servers using the tcsh shell:
HOME=/afs/umbc.edu/users/j/o/josey1/home
USER=josey1
LOGNAME=josey1
PATH=.:/afs/umbc.edu/users/j/o/josey1/home/bin:/usr/local/bin:/usr/bsd:/bin
:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/X11:/etc:/usr/etc:/usr/k5/bi
n:/usr/afsws/bin:/bin:/usr/java/bin:/usr/afsws/bin:/usr/X11R6/bin
MAIL=/afs/umbc.edu/users/j/o/josey1/Mail/inbox
SHELL=/bin/tcsh
TERM=xterm
DISPLAY=linux2.gl.umbc.edu:10.0
KRB5CCNAME=FILE:/tmp/krb5cc_l29893
HOSTTYPE=i386-linux
VENDOR=intel
OSTYPE=linux
MACHTYPE=i386
SHLVL=1
PWD=/afs/umbc.edu/users/j/o/josey1/home
GROUP=general
HOST=linux2.gl.umbc.edu
HOSTNAME=linux2.gl.umbc.edu
LESSOPEN=|/usr/bin/lesspipe.sh %s
TZ=EST5EDT
MANPATH=/usr/X11R6/man:/usr/k5/man:/usr/local/man:/usr/man:/usr/share/man
EDITOR=/usr/local/bin/pico
Important Environment Variables
 HOME - your home directory.
 USER and LOGNAME - your login ID.
 HOSTNAME - the name of the host computer.
 PWD - the current working directory.
 MAIL - where your mail is located.
 PATH - a list of directories in which to look for executable
commands.

 Certain applications and commands may communicate with the


shell and reference the environment variables that it maintains.
 For example, it seems that frm and nfrm seem not to work if $MAIL is
not defined. frm and nfrm are commands to list the contents of your
inbox without logging into pine.
~/bin
 bin directories
 Program files or commands, also called binary executable
files and script files, are kept in various places throughout the
system.
 Usually these binary files are stored in bin (short for binary)
directories throughout the system.
 If you take a look at the paths are stored in your $PATH
environment variable, you will notice that many of these
directories end in .../bin.
 Your ~/bin directory:
 You may also notice that your path may contain a bin
directory that is listed as being in your home directory
(/afs/umbc.edu/users/u/s/username/home/bin).
 This is where you can store your own compiled programs or
scripts that you would like to be able to run from anywhere
on the system.
Introducing tcsh
 Currently, the default shell on UMBC’s GL system is tcsh.
 tcsh is short for Turbo C SHell.
 Customizing your tcsh shell
 The UNIX@UMBC guide linked from the course webpage has a pretty
good section on customizing your tcsh shell.
 The URL of that specific section is
http://www.umbc.edu/oit/sans/helpdesk/Unix/custom.html.
 The .cshrc file.
 tcsh looks for a configuration file at startup time called "~/.cshrc"
 I recommend backing up a copy of your account configuration files
before modifying them (such as "cp .cshrc .cshrc.bak").
 Changes to your configuration file do not effect the system immediately
after you save the file.
 You might just be able to issue the command source ~/.cshrc to make the
changes take effect.
 You may need to logout and log back in for these changes to take effect.
# This is the default standard if ($?prompt) then
# .cshrc provided to csh users.
# They are expected to edit it to ##### sets the prompt
# meet their own needs. if ( -o /bin/su ) then
set prompt = "umbc8[1]% “
###Path is loaded with user's bin(s) else
if ( -o /bin/su ) then set prompt = "`hostname -s`
unset path [\!]# “
else endif
set path = ( . $HOME/bin)
endif ##### some environment variables
stty intr "^C" kill "^U" echoe
##### Load up the path with some setenv EDITOR /usr/local/bin/pico
##### additional directories. umask 077
set path=( $path /usr/local/bin set history = 100
/usr/bsd /bin /usr/bin \ set filec
/usr/sbin /usr/bin/X11
/usr/local/X11 \ /etc /usr/etc ) ##### aliases
alias h history
##### load machine-specific settings alias help apropos
if ( -r /usr/site/etc/system.cshrc ) alias rm "rm -i“
then alias ls 'ls -C --color‘
source /usr/site/etc/system.cshrc alias mailtest .mailtest
endif
##### my additions here down
alias mem "quota -v“
endif
tcsh Customization Tricks
 Since many students do not ever look at the core
dump files, they are simply an annoyance that
takes up space in your account. To prevent core
dumps from being created, add the following
line to your .cshrc file:
limit coredumpsize 0
 For a better version of auto completion, add the
following line to your .cshrc file:
set autolist
Login and Logout Files
 When using the tcsh shell, it attempts to execute
certain files when you log onto the system and
when you logout of the system.
 When you logon, tcsh looks for a file called
".login" and tries to execute the contents of the
file.
 When you logout, tcsh looks for a file called
".logout" and tries to execute the contents of
the file
Example .login File
# This is the default standard .login provided to csh users.
# They are expected to edit it to meet their own needs.
# Set the interrupt character to Ctrl-c and do clean backspacing.

##### sets interrupt sequence #####


if (-t 0) then
stty intr '^C' echoe
endif

##### Set the TERM environment variable #####


eval `tset -s -Q`

####### my modifications from here #######


# print new mail
echo "--- New Mail Messages ---“
nfrm

# print my quota
echo "\n--- My Disk Quota ---“
quota –v
echo "“

# remove that annoying netscape lock


rm -f .netscape/lock
Example .logout File
# File: .logout

# clean up Internet Explorer’s cache


rm -rf
"/afs/umbc.edu/users/u/s/username/ho
me/.2kprofile/Temporary Internet
Files“

# clean up UNIX Netscape's cache


rm -rf .netscape/cache

# clear the screen


clear
Introduction to bash
 The bash shell is one of the many shells that are
available to you on the GL network.
 Almost any home installation of Linux defaults to the
bash shell.
 bash is one the many GNU.org (http://www.gnu.org)
projects.
 bash manuals:
 A comprehensive online manual is provided at
http://www.gnu.org/manual/bash-2.05a/.
 Aliases - http://www.gnu.org/manual/bash-
2.05a/html_chapter/bashref_6.html#SEC77
 Controlling the Prompt - http://www.gnu.org/manual/bash-
2.05a/html_chapter/bashref_6.html#SEC81
bash Configuration Files
 bash has two different login files.
 .bashrc gets read when you open a local shell on a machine
 .bash_profile only gets read if and only if you login from a
remote machine. Note that .bash_profile itself reads in your
.bashrc file as well.

 If you want aliases to be executed regardless, then you


should put them in the .bashrc file.
 There are no default bash configuration files currently
being provided for GL. The two example
configuration files are courtesy of Dan Hood.
# File: .bashrc # ### path manipulation ###
# Description: A default # add ~/bin to the path,
# .bashrc for GL # cwd as well
###Source global defs ### PATH="$PATH:$HOME/bin:./“
if [ -f /etc/bashrc ]; then
. /etc/bashrc ### env variables ###
fi # make sure that you
# change this to your
###set the prompt ### # username
# uncomment out only one MAIL="/afs/umbc.edu/users/u/
# this is hostname and time s/username/Mail/inbox“
PS1="\h-(\@): " export PATH
# this is hostname and unset USERNAME
# history number
#PS1="\h-(\!)# " ### User-specific aliases
# this is hostname and ### and functions ###
# working directory alias rm="rm -i"
#PS1="\h-(\w)# "
# this is hostname and
# shortened working
# directory
#PS1="\h-(\W)# "
# File: .bash_profile
# Get the aliases and functions
# Get whatever is in your
# .bashrc config file
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
UNIX File System Overview
 Covered in class!

You might also like