105.1 レッスン 3
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
105 シェルとシェルスクリプト |
Objective: |
105.1 シェル環境をカスタマイズする |
Lesson: |
3 of 3 |
はじめに
前のレッスンでは、シェルと起動スクリプト、変数について学習しました。このレッスンでは、2つの非常に興味深いシェルの機能である エイリアス と 関数 を学び、シェルのカスタマイズについてまとめます。実際の所、一連の変数とエイリアス、関数が互いに影響し合って「シェル環境」を構成しています。
エイリアス と 関数 という2つのシェル機能は、いずれも柔軟で効率的であり、カプセル化という概念を実現します。つまり、これらは、一連のコマンドやその繰り返しを、1つのコマンドにまとめます。
エイリアスの作成
エイリアスは、コマンドに別の名前をつけるものです。エイリアスの定義に従って、入力したコマンドとは異なるコマンドを実行します。
エイリアスを宣言する構文は直感的です。キーワード alias
に続けて、割り当てを宣言します。すなわち、エイリアス名、等号、割り当てる1つ以上の コマンド です。
alias alias_name=command(s)
例えば次のようになります。
$ alias oldshell=sh
この役立たずなエイリアスは、ユーザーが端末に oldshell
と入力すると、古い sh
シェルのインスタンスを実行します。
$ oldshell $
エイリアスの威力は、長いコマンドに短い名前を付けることができることです。
$ alias ls='ls --color=auto'
Note
|
|
同様に、複数のコマンドを連続して実行するエイリアスも作成できます。コマンドラインと同様に、セミコロン(;
)が区切り文字です。たとえば、git
コマンドのパスとそのバージョンを表示するエイリアスは、次のようになります。
$ alias git_info='which git;git --version'
エイリアスを呼び出すには、その名前をコマンドラインに入力します。
$ git_info /usr/bin/git git version 2.7.4
alias
コマンドは、起動中のシェルで使用可能なすべてのエイリアスを一覧表示します。
$ alias alias git-info='which git;git --version' alias ls='ls --color=auto' alias oldshell='sh'
unalias
コマンドはエイリアスを削除します。たとえば、unalias git_info
を実行して、リストから消えることを確認します。
$ unalias git-info $ alias alias ls='ls --color=auto' alias oldshell='sh'
前のレッスンの alias hi='echo We salute you.'
で見たように、(引数があるために)コマンドに空白が含まれている場合は、コマンド全体を引用符(シングルまたはダブル)で囲みます。
$ alias greet='echo Hello world!' $ greet Hello world!
オプションを含むコマンドも空白を含みますから、引用符で囲みます。
$ alias ll='ls -al'
ll
は、隠しファイルを含むすべてのファイル(-a
)を長い形式(-l
)で一覧表示します。
エイリアス内で変数を参照できます。一重引用符('
)で囲むことに注意してください(後述)。
$ reptile=uromastyx $ alias greet='echo Hello $reptile!' $ greet Hello uromastyx!
エイリアス内で、変数を割り当てることもできます。
$ alias greet='reptile=tortoise; echo Hello $reptile!' $ greet Hello tortoise!
\
でエイリアスをエスケープできます。
$ alias where?='echo $PWD' $ where? /home/user2 $ \where? -bash: where?: command not found
エイリアスと同名のコマンドがある場合に、エスケープが役に立ちます。同名のコマンドがある場合はエイリアスの方が優先されますが、エスケープすることでコマンドにアクセスできます。
エイリアスを別のエイリアス内に入れ子にできます。
$ where? /home/user2 $ alias my_home=where? $ my_home /home/user2
また、後で示すように、エイリアス内に関数を置くこともできます。
エイリアス定義における引用符の働き
一重引用符の中で環境変数を使用すると、その展開はエイリアスの実行時に行われます(動的)。
$ alias where?='echo $PWD' $ where? /home/user2 $ cd Music $ where? /home/user2/Music
二重引用符の中で環境変数を使用すると、その展開はエイリアスの定義時に行われます(静的)。
$ alias where?="echo $PWD" $ where? /home/user2 $ cd Music $ where? /home/user2
エイリアスの永続化:起動スクリプト
変数の場合と同様に、エイリアスを永続化するには、起動時に読み込まれる初期化スクリプトにエイリアスの定義を置きます。すでに見てきたように、ユーザーの個人用エイリアスを入れるのに適したファイルは ~/.bashrc
です。多くの場合、既にいくつかのエイリアスがあります(ほとんどはコメントアウトされており、先頭の #
を削除すると使用できるようになることが多いです)。
$ grep alias .bashrc # enable color support of ls and also add handy aliases alias ls='ls --color=auto' #alias dir='dir --color= #alias vdir='vdir --color= #alias grep='grep --color= #alias fgrep='fgrep --color' #alias egrep='egrep --color= # some more ls aliases #ll='ls -al' #alias la='ls -A' #alias l='ls -CF' # ~/.bash_aliases, instead of adding them here directly. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
最後の3行では、独自のエイリアスファイル(~/.bash_aliases
)が存在すれば、ログインするたびに .bashrc
からそれが取り込まれます。つまり、エイリアスファイルを作成して、そこに記入しておけばよいわけです。
########### # .bash_aliases: # a file to be populated by the user's personal aliases (and sourced by ~/.bashrc). ########### alias git_info='which git;git --version' alias greet='echo Hello world!' alias ll='ls -al' alias where?='echo $PWD'
関数の作成
関数を使うと、Bash に備わっている特別な変数や位置パラメータを活用することができるので、エイリアスよりもプログラム的な柔軟性を得ることができます。また、条件判断や繰り返しループなどのフロー制御構造を利用することもできます。関数は、一連のコマンドやロジックを備えた1つのコマンドであると考えればよいでしょう。
関数を作成する2つの方法
関数を定義する、2つの構文(書き方)があります。
- キーワード
function
を使用する -
最初の方法では、キーワード
function
の後に関数の名前を置き、さらに中括弧で囲んで一連のコマンドを置きます。function function_name { command #1 command #2 command #3 . . . command #n }
- 括弧
()
を使用する -
もう一つの方法では、キーワード
function
を省略し、関数名の後に波括弧({}
)で囲んで一連のコマンドを置きます。function_name() { command #1 command #2 command #3 . . . command #n }
関数は(スクリプト)ファイルに置くのが普通ですが、1行ずつシェルプロンプトに直接入力することもできます。次の行を待っていることを示す PS2
(>
)に注意してください。
$ greet() { > greeting="Hello world!" > echo $greeting > }
どの場合でも、コマンドをセミコロンで区切ることで、関数を1行で記述することができます。(最後のコマンドの後のセミコロンにも注意してください)。
$ greet() { greeting="Hello world!"; echo $greeting; }
Enterキーを押しても bash
は文句を言わなかったので、関数を呼び出す準備ができました。関数を呼び出すには、その名前を入力します。
$ greet Hello world!
変数やエイリアスの場合と同様に、システムの再起動後も関数を永続化する場合は、それらを /etc/bash.bashrc
(グローバル)や ~/.bashrc
(ローカル)などのシェル初期化スクリプトに置いておく必要があります。
Warning
|
エイリアスや関数をいずれかの初期化スクリプトファイルに追加した後に、再ログインしたりシステムを再起動したりしたくない場合は、変更を有効にするために |
Bashの組み込み変数
Bourne Again Shell (bash)には、関数やスクリプトで役立つ特別な変数群があります。普通の変数とは異なり、これらの変数は参照のみが可能で変更できません。最も重要なものを以下に示します。
$?
-
この変数を参照すると、最後に実行されたコマンドの結果(exit値)が返されます。
0
が成功を意味します。$ ps aux | grep bash user2 420 0.0 0.4 21156 5012 pts/0 Ss 17:10 0:00 -bash user2 640 0.0 0.0 12784 936 pts/0 S+ 18:04 0:00 grep bash $ echo $? 0
0
以外の値はエラーを意味します。user1@debian:~$ ps aux |rep bash -bash: rep: command not found user1@debian:~$ echo $? 127
$$
-
シェルのPID(プロセスID)を返します。
$ ps aux | grep bash user2 420 0.0 0.4 21156 5012 pts/0 Ss 17:10 0:00 -bash user2 640 0.0 0.0 12784 936 pts/0 S+ 18:04 0:00 grep bash $ echo $$ 420
$!
-
直前に実行したバックグラウンドジョブのPIDを返します。
$ ps aux | grep bash & [1] 663 $ user2 420 0.0 0.4 21156 5012 pts/0 Ss+ 17:10 0:00 -bash user2 663 0.0 0.0 12784 972 pts/0 S 18:08 0:00 grep bash ^C [1]+ Done ps aux | grep bash $ echo $! 663
Noteアンパサンド(
&
)は、バックグラウンドでプロセスを開始します。 - 位置パラメータ
$0
~$9
-
これらは、関数(ないしスクリプト)に渡されたパラメータ(引数)を返します 〜
$0
はスクリプトやシェル自体の名前になります。位置パラメータを表示する関数を作成しましょう 〜 続く行の入力待ちを示す
PS2
(>
)に注意してください。$ special_vars() { > echo $0 > echo $1 > echo $2 > echo $3 }
続いて、3つのパラメータ(
debian
、ubuntu
、zorin
)を渡して、関数(special_vars
)を呼び出します。$ special_vars debian ubuntu zorin -bash debian ubuntu zorin
期待どおりに機能しました。
Warningエイリアスに位置パラメータを埋め込んでもエラーにはなりませんが、エイリアスを展開した結果の後にパラメータが置かれるので、位置パラメータ変数への参照はまったく機能しません。
$ alias great_editor='echo $1 is a great text editor' $ great_editor emacs is a great text editor emacs
Bashには、他にも以下のような特別な組み込み変数があります。
$#
-
コマンドに渡された引数の数を示します。
$@
、$*
-
これらは、コマンドに渡された引数全体を示します。
$_
-
最後のパラメータ、ないしはスクリプトの名前を示します(詳細は、
man bash
を調べてください!)
関数内の変数
もちろん、関数内でも変数を使用できます。
例を示すために、funed
という名前の新しい空のファイルを作成して、次の関数を置きます。
editors() { editor=emacs echo "My editor is: $editor. $editor is a fun text editor." }
前述の通り、関数を呼び出せるようにするために、ファイルを取り込む必要があります。
$ . funed
ではやってみましょう!
$ editors My editor is emacs. emacs is a fun text editor.
editors
関数を正しく機能させるために、最初に editor
変数を設定しています。その変数のスコープ(有効範囲)は現在のシェルに対してローカルであり、セッションが続いている間はそれを参照できます。
$ echo $editor emacs
ローカル変数と同様に、関数内で環境変数を使うこともできます。
editors() { editor=emacs echo "The text editor of $USER is: $editor." } editors
今度は、ファイルの最後で関数を呼び出している(最後の行の editors
)ことに注意してください。これにより、ファイルを取り込むとすぐに関数が呼び出されます。
$ . funed The text editor of user2 is: emacs.
関数における位置パラメータ
(関数にパラメータを渡せば)位置パラメータで参照することができます。
ファイルまたはスクリプトから、関数にパラメータを渡してみましょう(最後の行 editors tortoise
に着目してください):
editors() { editor=emacs echo "The text editor of $USER is: $editor." echo "Bash is not a $1 shell." } editors tortoise
ファイルを取り込んで、動作を確認します。
$ . funed The text editor of user2 is: emacs. Bash is not a tortoise shell.
コマンドラインから関数に位置パラメータを渡すこともできます。確認するために、ファイルの最後の行を削除します。
editors() { editor=emacs echo "The text editor of $USER is: $editor." echo "Bash is not a $1 shell." }
ファイルを取り込みます。
$ . funed
コマンドラインから、パラメータに tortoise
を指定して関数を呼び出します。パラメータは $1
に格納されます。
$ editors tortoise The text editor of user2 is: emacs. Bash is not a tortoise shell.
スクリプト内の関数
関数は主にBashスクリプトに置かれます。
funed
ファイルをスクリプト(funed.sh
と名付けます)に変換することは実に簡単です。
#!/bin/bash editors() { editor=emacs echo "The text editor of $USER is: $editor." echo "Bash is not a $1 shell." } editors tortoise
以上! 2行だけ追加しました:
-
最初の行は shebang (
シバン
またはシェバン
)と呼び、スクリプトを解釈するプログラムを定義します。奇異に思うかもしれませんが、ここではbash
そのもの(#!/bin/bash
)です。 -
最後の行は単なる関数呼び出しです。
あとひとつ。スクリプトを実行可能にします。
$ chmod +x funed.sh
さぁ、準備ができました!
$ ./funed.sh The text editor of user2 is: emacs. Bash is not a tortoise shell.
Note
|
次からのレッスンで、 シェルスクリプト について学びます。 |
エイリアス内の関数
前述のように、エイリアス内にも関数を置くことができます。
$ alias great_editor='gr8_ed() { echo $1 is a great text editor; unset -f gr8_ed; }; gr8_ed'
この長いエイリアス値について説明しましょう。
-
最初に関数定義があります:
gr8_ed() { echo $1 is a great text editor; unset -f gr8_ed; }
-
関数の最後のコマンド〜
unset -f gr8_ed
〜は、関数呼び出しの最後に、bash
セッションから関数gr8_ed
を削除します。 -
最後に、1回だけ関数
gr8_ed
を呼び出します。
エイリアスを呼び出して、うまく動くことを確認します。
$ great_editor emacs emacs is a great text editor
unset -f gr8_ed
が示すように、unset
コマンドは、変数を削除するだけでなく、関数を削除することもできます。実は、対象を明示するオプションがあります。
unset -v
-
変数を削除する
unset -f
-
関数を削除する
オプションなしの場合、unset
は最初に変数の削除を試みて、失敗した場合に関数の削除を試みます。
関数内の関数
次に、user2
がシステムにログインするたびに、2つのことを user2
に伝えたいとしましょう。
-
helloと言って、テキストエディタを推薦/賞賛する。
-
user2は
$HOME/Video
フォルダにたくさんのMatroska
(訳注: マルチメディアデータ格納ファイル形式のひとつ) ビデオファイルを入れ始めているので、警告を与える。
そのために、次の2つの関数を /home/user2/.bashrc
に追加します。
最初の関数 check_vids
は、.mkv
ファイルのチェックと警告を行います。
check_vids() { ls -1 ~/Video/*.mkv > /dev/null 2>&1 if [ "$?" = "0" ];then echo -e "Remember, you must not keep more than 5 video files in your Video folder.\nThanks." else echo -e "You do not have any videos in the Video folder. You can keep up to 5.\nThanks." fi }
check_vids
は3つのことを行います:
-
~/Video
内のmkv
ファイルをリストして、出力(とエラー)をいわゆる ビットバケツ(/dev/null
)に送信する。(訳注:ビットバケツはデータの捨て場所の意) -
前のコマンドが成功したかどうかを確認する。
-
テストの結果に応じて、2つのメッセージのいずれかを出力する。
2つ目の関数は、editors
関数の変更版です。
editors() { editor=emacs echo "Hi, $USER!" echo "$editor is more than a text editor!" check_vids } editors
着目点が2つあります。
-
editors
の最後でcheck_vids
を呼び出すので、両方の機能が連続して実行されます。挨拶と賞賛、チェックと警告がこの順に実行されます。 -
最後の
editors
は関数を呼び出すためのものです。
では、user2
としてログインして、動作を確認しましょう。
# su - user2 Hi, user2! emacs is more than a text editor! Remember, you must not keep more than 5 video files in your Video folder. Thanks.
演習
-
エイリアスと関数の機能を考えて、「はい」または「いいえ」で表を完成させてください。
機能 エイリアス? 関数? ローカル変数を使用できる
環境変数を使用できる
\
でエスケープできる再帰的になることがある
位置パラメータとともに使用すると効果的である
-
シェルセッション内のすべてのエイリアスを一覧表示するコマンドは何ですか?
-
~/Music
内のすべてのogg
ファイルを1行に1つずつリストするlogg
という名前のエイリアスを書いて下さい。 -
logg
エイリアスを呼び出して、その動作を確認して下さい。 -
次に、エイリアスを変更して、リストの前にセッションのユーザーとコロンをエコー出力してください。
-
もう一度呼び出して、この新しいバージョンの動作を確認して下さい。
-
すべてのエイリアスを一覧表示して、一覧に
logg
エイリアスが表示されることを確認して下さい。 -
そのエイリアスを削除して下さい。
-
“エイリアス名” 列と “エイリアスコマンド” 列に応じて、それぞれのエイリアスを定義してください。
エイリアス名 エイリアスコマンド エイリアスの割り当て b
bash
bash_info
which bash
+echo "$BASH_VERSION"
kernel_info
uname -r
greet
echo Hi, $USER!
computer
pc=slimbook
+echo My computer is a $pc
-
root
として、/etc/bash.bashrc
にmy_fun
という関数を定義して下さい。関数はユーザーに挨拶し、PATHが何であるかをユーザーに伝えるものとします。ユーザーがログインするたびに2つのメッセージを受け取るように呼び出して下さい。 -
user2
としてログインして、動作を確認して下さい。 -
同じ関数を1行で記述して下さい。
-
関数を呼び出して下さい。
-
関数を削除して下さい。
-
以下に
special_vars
関数の修正バージョンを示します:$ special_vars2() { > echo $# > echo $_ > echo $1 > echo $4 > echo $6 > echo $7 > echo $_ > echo $@ > echo $? > }
次のコマンドで関数を呼び出します:
$ special_vars2 crying cockles and mussels alive alive oh
何が出力されますか?
コマンド 値 echo $#
echo $_
echo $1
echo $4
echo $6
echo $7
echo $_
echo $@
echo $?
-
「
関数内の関数
」セクションのサンプル関数(check_vids
)を改造して、bash の起動スクリプトに含めるための関数check_music
を作って下さい。挙動を簡単に変更できるように、次の項目を(次の順序で)パラメータとして指定するものとします。-
ファイルを保存するディレクトリ:
~/Music
-
チェックするファイル種別:
ogg
-
保存できるファイルの数:
7
-
ファイルの内容を示す名前:
music
-
発展演習
-
読み取り専用関数とは、内容を変更できない関数です。読み取り専用関数 について調べて、次の表の空欄を埋めてください。
関数名 読み取り専用にするコマンド すべての読み取り専用関数を一覧表示するコマンド my_fun
-
PS1
を変更する方法についてWebを調べて、ユーザーに次の情報を提供して、PS1
を指定のものに変更する、fyi
という(起動スクリプトに置く)関数を作成して下さい。-
ユーザーの名前
-
ホームディレクトリ
-
ホストの名前
-
オペレーティングシステムの種別
-
実行可能ファイルの検索パス
-
メールディレクトリ
-
メールをチェックする頻度
-
現在のセッションのシェルの深さ(ネスト数)
-
プロンプトを
<user>@<host-date>
に変更する
-
まとめ
このレッスンでは、以下の事柄を学びました:
-
エイリアスと関数はどちらもシェルの重要な機能であり、繰り返し使われるコードをカプセル化できること。
-
エイリアスは、長いコマンドや複雑なコマンドを短い入力で使用する場合に便利なこと。
-
関数はロジックを実装したもので、主にスクリプトでタスクを自動化するために使われること。
-
エイリアスと関数を記述するための構文。
-
セミコロン(
;
)を使用して複数のコマンドを連結する方法。 -
エイリアスで適切な引用符を使用する方法。
-
エイリアスや関数を永続化する方法。
-
Bashの特別な組み込み変数:
$?
、$$
、$!
、位置パラメータ($0
〜$9
)、$#
、$@
、$*
、$_
。 -
関数で変数や位置パラメータを使用する方法。
-
スクリプトで関数を使用する方法。
-
エイリアスから関数を呼び出す方法。
-
関数から別の関数を呼び出す方法。
-
bash
スクリプトを作成する基礎。
このレッスンで取り上げたコマンドとキーワード:
alias
-
エイリアスを作成します。
unalias
-
エイリアスを削除します。
cd
-
作業ディレクトリを変更します。
grep
-
パターンに一致する行を出力する。
function
-
関数を作成するためのキーワード。
.
-
ファイルを読み込みます。
source
-
ファイルを読み込みます。
ps
-
現在のプロセスの状態をレポートします。
echo
-
テキストを表示します。
chmod
-
ファイルのモードビットを変更します。たとえば、ファイルを実行可能にするなど。
unset
-
変数や関数の定義を削除します。
su
-
ユーザーIDを変更する、ないし、スーパーユーザーになる。
演習の解答
-
エイリアスと関数の機能を考えて、「はい」または「いいえ」で表を完成させてください。
機能 エイリアス? 関数? ローカル変数を使用できる
Yes
Yes
環境変数を使用できる
Yes
Yes
\
でエスケープできるYes
No
再帰的になることがある
Yes
Yes
位置パラメータとともに使用すると効果的である
No
Yes
-
シェルセッション内のすべてのエイリアスを一覧表示するコマンドは何ですか?
alias
-
~/Music
内のすべてのogg
ファイルを1行に1つずつリストするlogg
という名前のエイリアスを書いて下さい。alias logg='ls -1 ~/Music/*ogg'
-
エイリアスを呼び出して、その機能を確認して下さい。
logg
-
次に、エイリアスを変更して、リストの前にセッションのユーザーとコロンをエコー出力してください。
alias logg='echo $USER:; ls -1 ~/Music/*ogg'
-
もう一度呼び出して、この新しいバージョンの動作を確認して下さい。
logg
-
すべてのエイリアスを再び一覧表示して、logg エイリアスが一覧に表示されることを確認して下さい。
alias
-
そのエイリアスを削除して下さい。
unalias logg
-
“エイリアス名” 列と “エイリアスコマンド” 列に応じて、それぞれのエイリアスを定義してください。
エイリアス名 エイリアスコマンド エイリアスの割り当て b
bash
alias b=bash
bash_info
which bash
+echo "$BASH_VERSION"
alias bash_info='which bash; echo "$BASH_VERSION"'
kernel_info
uname -r
alias kernel_info='uname -r'
greet
echo Hi, $USER!
alias greet='echo Hi, $USER'
computer
pc=slimbook
+echo My computer is a $pc
alias computer='pc=slimbook; echo My computer is a $pc'
-
root
として、/etc/bash.bashrc
にmy_fun
という関数を定義して下さい。関数はユーザーに挨拶し、PATHが何であるかをユーザーに伝えるものとします。ユーザーがログインするたびに2つのメッセージを受け取るように呼び出して下さい。A案:
my_fun() { echo Hello, $USER! echo Your path is: $PATH } my_fun
B案:
function my_fun { echo Hello, $USER! echo Your path is: $PATH } my_fun
-
user2
としてログインして、動作を確認して下さい。su - user2
-
同じ関数を1行で記述して下さい。
A案:
my_fun() { echo "Hello, $USER!"; echo "Your path is: $PATH"; }
B案:
function my_fun { echo "Hello, $USER!"; echo "Your path is: $PATH"; }
-
関数を呼び出して下さい。
my_fun
-
関数を削除して下さい。
unset -f my_fun
-
以下に
special_vars
関数の修正バージョンを示します:$ special_vars2() { > echo $# > echo $_ > echo $1 > echo $4 > echo $6 > echo $7 > echo $_ > echo $@ > echo $? > }
次のコマンドで関数を呼び出します:
$ special_vars2 crying cockles and mussels alive alive oh
何が出力されますか?
コマンド 値 echo $#
7
echo $_
7
echo $1
crying
echo $4
mussels
echo $6
alive
echo $7
oh
echo $_
oh
echo $@
crying cockles and mussels alive alive oh
echo $?
0
-
「
関数内の関数
」セクションのサンプル関数(check_vids
)を改造して、bash の起動スクリプトに含めるための関数check_music
を作って下さい。挙動を簡単に変更できるように、次の項目を(次の順序で)パラメータとして指定するものとします。-
ファイルを保存するディレクトリ:
~/Music
-
チェックするファイル種別:
ogg
-
保存できるファイルの数:
7
-
ファイルの内容を示す名前:
music
check_music() { ls -1 ~/$1/*.$2 > ~/.mkv.log 2>&1 if [ "$?" = "0" ];then echo -e "Remember, you must not keep more than $3 $4 files in your $1 folder.\nThanks." else echo -e "You do not have any $4 files in the $1 folder. You can keep up to $3.\nThanks." fi } check_music Music ogg 7 music
-
発展演習の解答
-
読み取り専用関数とは、内容を変更できない関数です。読み取り専用関数 について調べて、次の表の空欄を埋めてください。
関数名
読み取り専用にするコマンド
すべての読み取り専用関数を一覧表示するコマンド
my_fun
readonly -f my_fun
readonly -f
-
PS1
を変更する方法についてWebを調べ、ユーザーに次の情報を提供してPS1
を指定のものに変更する、fyi
という(起動スクリプトに置く)関数を作成して下さい。-
ユーザーの名前
-
ホームディレクトリ
-
ホストの名前
-
オペレーティングシステムの種類
-
実行可能ファイルの検索パス
-
メールディレクトリ
-
メールがチェックされる頻度
-
現在のセッションのシェルの深さ(ネスト数)
-
プロンプトを
<user>@<host-date>
に変更するfyi() { echo -e "For your Information:\n Username: $USER Home directory: $HOME Host: $HOSTNAME Operating System: $OSTYPE Path for executable files: $PATH Your mail directory is $MAIL and is searched every $MAILCHECK seconds. The current level of your shell is: $SHLVL" PS1="\u@\h-\d " } fyi
-