haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 幼儿教育 > 少儿英语少儿英语

Shells, Shell Scripting, and the UNIX File System

发布时间:2013-11-27 12:02:03  

Shells, Shell Scripting,

and the

UNIX File System

CMSC 121 Introduction to UNIX

Much of the material in these slides was taken fromDan 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 .

?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 chshthat 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/cshShell changed.

Aliasing Commands

?A helpful feature, especially for many users new to UNIX, is the alias function.

?The aliascommand 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>

?bashsyntax:

–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 envcommand 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/bin:/usr/afsws/bin:/bin:/usr/java/bin:/usr/afsws/bin:/usr/X11R6/binMAIL=/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/manEDITOR=/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 frmand nfrmseem not to work if $MAILis not defined. frmand nfrmare 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.?tcshis 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 tcshshell.

–The URL of that specific section is .

?The .cshrcfile.

–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 ~/.cshrcto 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 # .cshrc provided to csh users.# They are expected to edit it to # meet their own needs.

###Path is loaded with user's bin(s)if ( -o /bin/su ) thenunset pathelse

set path = ( . $HOME/bin)endif

##### Load up the path with some ##### additional directories. set path=( $path /usr/local/bin

/usr/bsd /bin /usr/bin \/usr/sbin /usr/bin/X11

/usr/local/X11 \/etc /usr/etc )##### load machine-specific settingsif ( -r /usr/site/etc/system.cshrc )then

source /usr/site/etc/system.cshrcendif

if ($?prompt) then

##### sets the promptif ( -o /bin/su ) then

set prompt = "umbc8[1]% “else

set prompt = "`hostname -s` [\!]# “endif

##### some environment variables stty intr "^C" kill "^U" echoesetenv EDITOR /usr/local/bin/picoumask 077

set history = 100set filec

##### aliasesalias h historyalias help aproposalias rm "rm -i“

alias ls 'ls -C --color‘alias mailtest .mailtest##### my additions here downalias 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 cacherm -rf "/afs/umbc.edu/users/u/s/username/home/.2kprofile/Temporary Internet Files“

# clean up UNIX Netscape's cacherm -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 () projects.

?bash manuals:

–A comprehensive online manual is provided at .

–Aliases -–Controlling the Prompt -

bash Configuration Files

?bash has two different login files.

–.bashrcgets read when you open a local shell on a machine

–.bash_profileonly gets read if and only if you login from a remote machine. Note that .bash_profileitself reads in your .bashrcfile as well.

?If you want aliases to be executed regardless, then you should put them in the .bashrcfile.?There are no default bash configuration files currently being provided for GL. The two

example configuration files are courtesy of Dan Hood.

# File: .bashrc #

# Description: A default# .bashrc for GL

###Source global defs ###if [ -f /etc/bashrc ]; then

. /etc/bashrcfi

###set the prompt #### uncomment out only one# this is hostname and timePS1="\h-(\@): "

# this is hostname and # history number#PS1="\h-(\!)# "

# this is hostname and # working directory#PS1="\h-(\w)# "

# this is hostname and # shortened working # directory

#PS1="\h-(\W)# "

### path manipulation #### add ~/bin to the path,# cwd as well

PATH="$PATH:$HOME/bin:./“### env variables #### make sure that you # change this to your # username

MAIL="/afs/umbc.edu/users/u/s/username/Mail/inbox“export PATHunset USERNAME

### User-specific aliases ### and functions ###alias rm="rm -i"

# 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!

网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com