Top Banner
CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang [email protected]. edu
23

CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang [email protected] [email protected].

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

CS 497C – Introduction to UNIXLecture 36: - Customizing the

Environment

Chin-Chih [email protected]

Page 2: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Which Shell?• A command in one shell may either not be

available in another or behave in a different manner.

• You can ask the system administrator to set your login shell.

• If your system supports the chsh command, you can do that yourself. In our department, ypchsh is used instead of chsh.

• ypchsh is used change your password in the NIS database.

Page 3: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Which Shell?• The Network Information Service (NIS) is an

administrative database that provides central control and automatic dissemination of important administrative files.

• NIS converts several standard UNIX files into databases that can be queried over the network. The databases are called NIS Maps.

• The advantage of using NIS is that these important administrative files can be maintained on a central server, and yet completely accessible to every workstation on the network.

Page 4: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Which Shell?

• Let’s select Korn as our login shell:% ypchsh

Changing NIS account information for cs497c on bentley.

Please enter password:

Changing login shell for cs497c on bentley.

To accept the default, simply press return. To use the

system's default shell, type the word "none".

Login shell [/bin/csh]: /usr/bin/ksh

The login shell has been changed on bentley.

Page 5: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Which Shell?• The Bourne shell (sh) is the first shell of the

UNIX system and has the fewest features. • The C shell (csh) introduced by Berkeley as

a superior interpreter but an inferior programming language.

• The ksh93 version of the Korn shell (ksh) is superior to the other two and feature-rich.

• bash, the Bourne Again shell (bash) is the standard shell used by Linux systems.

Page 6: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Environment Variables• An environment variable is a shell variable

that is exported to make it available in all sub-shells.

• The behavior of the UNIX system is largely determined by the settings of these variables.

• The set statement displays a complete list of all variables.

• It’s the env command (or export statement) that shows only the environment variables.

Page 7: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Environment Variables• Setting a variable to an environment

variable in different shells is shown as follows:– Bourne shell: x=5; export x– C Shell: setenv x 20– Korn Shell: export x=5

• PATH is a system variable that contains a colon-delimited list of directories that the shell looks through to locate a command invoked by a user.

Page 8: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Significance of the Environment (System) Variables

• HOME shows your login directory.• LOGNAME shows your username.• MAIL shows the mailbox location.• PS1 stores the primary prompt string. PS2

stores the secondary prompt string.• CDPATH stores the directory search path.• SHELL stores the shell you are using.• TERM indicates the terminal type that is

used.

Page 9: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Significance of the Environment (System) Variables

• The C Shell stores the prompt string in the prompt variable.

• The C Shell introduces a history feature that allows users to reexecute previous commands without reentering them.

• Every command in the history list has an event number.

• The C Shell uses path as the command search path.

Page 10: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Aliases

• All shells apart from Bourne support the use of aliases that let you assign shorthand names for frequently used command.

• Examples of using aliases in C Shell are shown in below:

alias dir ls -l

alias ls ls -Fax

unalias dir

Page 11: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Aliases• Using aliases in Korn Shell and bash is

shown as follows:alias dir=‘ls -l’alias ls=‘ls -Fax’• These shells also support a history feature

that lets you recall previous commands (events), performing a substitution if necessary.

• The history command displays all events:% history

Page 12: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Command History (C Shell and bash)

• The ! command is used to repeat previous commands in C Shell.

• !! repeats previous command.• !11 repeats event number 11.• !-2 repeats the command before the last one.• !v repeats last command beginning with v.• !grep:s/William/Bill repeats previous grep

command with Bill instead of William.• ^bak^doc substitutes first instance of bak.

Page 13: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Command History (Korn Shell)• Korn uses the r command to repeat

previous commands.• r repeats the last command.• r 11 repeats the event number 11. • r -2 repeats the command before the last

one.• r v repeats last command beginning with v.• r grep William = Bill repeats previous grep

command with Bill instead of William.

Page 14: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

In-Line Command Editing in Korn Shell and bash

• You can perform vi and emacs like in-line editing of the command line by using set -o vi or set -o emacs.

• Suppose you chose vi. Press [Esc] to take you to vi’s Command Mode.

• You can use the /pattern sequence.• Use i, a, A, and so forth to enter the Input

Mode.• Use set +o to turn off in-line editing.

Page 15: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Filename Completion• Korn and bash support a feature called

filename completion, which has been enhanced in the modern version of these shells to support. – Completion of a filename used as an argument

to a command.– Completion of the command name itself.

• This means that you may not have to enter the complete command or filename.

Page 16: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Filename Completion• To activate the completion in Korn Shell,

use either one of them: set –o vi, EDITOR=vi, VISUAL=vi.

• To use the completion feature, we need just two commands; both require the [Esc] key.

• vi pl[Esc]\ use vi to edit the file planets.

• You can ask for the file list that matches the entered string by using [Esc]=.

vi pl[Esc]=

Page 17: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Miscellaneous Features• The C Shell uses the set statement with the

noclobber argument to prevent accidental overwriting of files:

set noclobber• To override this protection feature, you

have to use the !.• set ignoreeof make [Ctrl-d] not log you out.• In Korn shell and bash, you use: set –o noclobber

Page 18: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

Miscellaneous Features

• The ~ acts as a shorthand representation of the home directory.

• cd ~juliet effectively becomes cd $HOME/juliet.

• We have assigned values to many environment variables, defined aliases and used set options. To make these settings permanent, you’ll have to place them in the system’s startup scripts.

Page 19: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

The Initialization Scripts

• Every shell uses at least one startup script that is placed in the user’s home directory.

• Look in your home directory with ls –a, and you’ll find one or more of these files:– .profile (Bourne Shell)– .login, .cshrc and .logout (C Shell)– .profile and .kshrc (Korn Shell)– .bash_profile (or .profile

or .bash_login), .bashrc and .bash_logout (bash).

Page 20: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

The Initialization Scripts

• A script can belong to one of three categories:– Login script – This is a startup script that is

executed when a user logs in (.login, .profile and .bash_profile).

– Environment script – This file is executed when a sub-shell is run from the login shell. It is often referred to as the rc script (.cshrc, .kshrc and .bashrc).

– Logout script – Only the C shell and bash use a logout script (.logout and .bash_logout).

Page 21: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

The Initialization Scripts• There are two commands which run any

shell script without creating a sub-shell – the . (dot) and source command.

• The C shell uses source, Bourne and Korn shell use the dot, and bash uses both.

• When you log in, you see an interactive shell that present a prompt and waits for your requests.

• When you execute a shell script, you call up a noninteractive shell.

Page 22: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

The Initialization Scripts

• In the Bourne shell login, the shell executes these two files: /etc/profile and .profile in user’s home directory.

• In the C shell login, the shell runs three scripts in the order: /etc/login or /etc/.login, ~/.cshrc, and then ~/.login.

• In the Korn shell login, the scripts are executed in this order: /etc/profile, ~/.profile, and then ~/.kshrc.

Page 23: CS 497C – Introduction to UNIX Lecture 36: - Customizing the Environment Chin-Chih Chang chang@cs.twsu.edu chang@cs.twsu.edu.

The Initialization Scripts

• In the bash shell login, the scripts are executed in this order: /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile, and then ~/.bashrc.