ご利用ガイド第8回:環境設定を変更してみる!

目次

STEP1
STEP2
STEP3
STEP4

第8回:環境設定を変更してみる!

前回 は、vi(ぶいあい)エディタで、ファイルの作成、編集を学びました。ここからは、もっと深い黒い画面の話に突入します。ですので、今までの4コマも楽しみつつ、おさらいしてから学んでいきましょう。

第1回:VPSってなに? おいしいの?

第2回:ConoHaでVPSをはじめてみよう!

第3回:黒い画面を撃て!

第4回:ターミナルソフトを使ってみよう

第5回:コマンドにチャレンジ!

第6回:使いこなせ!黒い画面

第7回:エディタを使ってみる!

第1回のVPSの概念から始まり、立ち上げ方、コンソールでのログイン方法、ターミナルソフトでのログイン方法、そこで使うコマンド、エディタ使い方と一連の流れを学んできました。

これを踏まえて、今回のテーマは黒い画面(ここではCentOS 6.5)の操作には欠かせない「環境設定を変更してみる」です。そもそも環境変数ってなに?と思われることでしょう。そこから学んでいきましょうね。

■環境変数とは?

UNIX(ここではCentOS 6.5)における環境変数とは、シェル(Shell、ここではbash(ばっしゅ))内で独自に保持している変数である。

環境変数の値は「$環境変数名」という書式で参照する。

一つの環境変数は、変数名とその値をもち、通常「変数名=値」と表記する。変数名は英数字とアンダースコアで構成される。値は一般的にはとくに型や構造は定義されておらず、単なる文字列である。

環境変数は、各プロセスに付随するデータである。一つのプロセスが複数の環境変数をもつことができる。あるプロセスに付随している環境変数の総体のことを、環境ということがある。

環境変数を設定する方法はシェル毎(bash、sh、csh等)により異なる。

※今回はbashについて説明します。

■シェルとは?

シェルとは、オペレーティングシステム(ここではCentOS 6.5)のユーザーのためにインタフェースを提供するソフトウェアであり、カーネルのサービスへのアクセスを提供する。OSの内部(カーネル)とユーザーの間にある外殻であることから、シェルと呼ばれている。

■コマンドプロンプトとは?

コマンドプロンプト (Command Prompt) とは、コマンドの「入力を促すもの」を意味し、画面上に表示するコマンド入力待ち状態であることを表す記号である。多くの場合、コマンドプロンプトとして表示する文字を自由に変更可能であり、利便性向上のためにカレントディレクトリ、ホスト名、現在時刻、実行中のジョブの数等をコマンドプロンプトとして表示させることができる。

あまり難しく考えることはありません。VPSにログインした時点で、bashというソフトウェア上で黒い画面を操作していて、それの設定変更をする場所のことを「環境変数」と呼んでいて、コマンドを入力する左側(初期設定では「[root@v”IP” “相対パス”]# 」)の箇所も変更できます、ということです。

 

では、ここで幾つかコマンドプロンプトの環境変数の設定を変えながら、楽しんで学んでいきましょう。

現在の設定を確認してみます。

[localadm@test ~]$ echo $PS1
[u@h W]$

分かりにくい文字がでてきましたね。これは、コマンドプロンプトの環境変数が「$PS1」に格納されていて、それを表示する為に「echo」コマンドを使い、その結果、以下の3つの文字と、区切りで使っている「@」が表示された。ということです。

・コマンドプロンプト変数の初期設定内容

 u – ユーザ名

 h – ホスト名(ドメインを除く部分)

 W – カレントディレクトリ(相対パス)

・時計を24時間形式で表示されるように追加(tを追加)してみます。この時に環境変数の設定コマンドとして、「export」コマンドを使います。

[localadm@test ~]$ export PS1='[u@h@t w]$ ‘
[localadm@test@10:00:01 ~]$

時間が24時間形式で秒単位まで表示されましたね。

・コマンドプロンプトの環境変数(PS1)に設定できる値のいくつかの例を紹介します。

 d – 日付

 H – ホスト名(FQDN)

 s – シェル

 @ – 時刻 (12時間形式でamかpmが付く)

 T – 時刻 (12時間形式)

 ! – ヒストリ番号

 w – カレントディレクトリ(絶対パス)

 $ – rootユーザなら#、それ以外なら$を表示

 v – bashのバージョン

 V – bashのバージョン・リリース番号など詳細

 # – コマンドのコマンド番号(ログイン後何回実行したか)

・例えば、ユーザ名、ホスト名(FQDN)、時間、ヒストリ番号、ユーザ識別を表示し、それぞれを「@」区切りで表示したい場合。設定後に、/var/log に移動(cd)して、カレントディレクトリの絶対パスが表示されるかも見てみます。

[localadm@test ~]$ export PS1='[u@H@t@! w]$ ‘
[localadm@vxxx-x-xxx-xxx.xxxx.static.cnode.jp@10:01:01@101 ~]$
[localadm@vxxx-x-xxx-xxx.xxxx.static.cnode.jp@10:01:01@101 ~]$ cd /var/log
[localadm@vxxx-x-xxx-xxx.xxxx.static.cnode.jp@10:01:01@102 /var/log]$

これはさすがに情報が多すぎますね。なので、ホスト名をドメインを除く部分だけにして、もう少し見やすくしてみましょう。

・ユーザ名、ホスト名(ドメインを除く部分)、時間、ヒストリ番号、ユーザ識別を表示し、それぞれを半角スペースで区切り表示したい場合。設定後に「ps -ef」コマンドを打って、ヒストリ番号が正しく動いているか確認します。

[localadm@test ~]$ export PS1='[u h t ! w]$ ‘
[localadm vxxx-x-xxx-xxx 10:02:01 102 /var/log]$
[localadm vxxx-x-xxx-xxx 10:02:02 102 /var/log]$ ps -ef
~psコマンド表示結果~
[localadm vxxx-x-xxx-xxx 10:02:03 103 /var/log]$

ちゃんと「102」番から「103」番にヒストリ番号がカウントされていますね。この情報をターミナルソフトのログを保存することで、作業記録(証跡管理)としても活用できます。是非、使ってみてください。

・コマンド結果を表示することもできます。サーバの負荷(load average)を調べる uptime コマンド結果を、コマンドプロンプトに表示してみます。

 ※この時、シングルクオート(’ ‘)ではなく、ダブルクオート(” “)で囲む点に注意してください。

[localadm@test ~]$ export PS1=”[$(uptime) ]$ ”
[ 10:03:01 up 30 days, 10:03, 1 users, load average: 0.00, 0.00, 0.00 ]$

・コマンドプロンプトの色を指定することもできます。「[33[“色を指定する変数” 」と「 m] 」で指定します。以下はコマンドプロンプトを「赤色」に設定している例です。

 ※この時も、シングルクオート(’ ‘)ではなく、ダブルクオート(” “)で囲む点に注意してください。

[localadm@test ~]$ export PS1=”[33[0;31m][u@h:W]$ ”

変更できる色について、いくつかの例を紹介します。

 0;30 – 黒色(Black)  

 0;31 – 赤色(Red)  

 0;32 – 緑色(Green)  

 0;34 – 青色(Blue)  

 0;35 – 紫色(Purple)  

 0;36 – 水色(Cyan)  

 0;37 – 明灰色(Light Gray)  

 1;30 – 暗灰色(Dark Gray)  

 1;33 – 黄色(Yellow)  

 1;37 – 白色(White)  

・ここまで設定した自分だけのオリジナルなコマンドプロンプトを、次回ログインした時も同じ設定で使いたいですよね。そんな時には、ホームディレクトリにある「.bashrc」に、PS1の環境変数設定を記述しておくことで、同じ設定が使えるようになります。ファイルを編集する際は、バックアップを取ってから作業をするようにしましょう。

 ※この時「.bashrc」は、ファイル名の頭に「.」が付いている隠しファイルとなっていますので、「ls -la」でファイルがあることを確認してください。

[localadm@test ~]$ ls -la
~省略~
-rw-r-r- 1 test test 200 7月 3 10:00 2014 .bashrc
[localadm@test ~]$ cp .bashrc bashrc-backup-20140703
[localadm@test ~]$ ls -la
~省略~
-rw-r-r- 1 test test 200 7月 3 10:00 2014 .bashrc
-rw-r-r- 1 test test 200 7月 3 10:01 2014 bashrc-backup-20140703

[localadm@test ~]$ vi .bashrc
# .bashrc

# User specific aliases and functions

alias rm=’rm -i’
alias cp=’cp -i’
alias mv=’mv -i’

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

PS1='[u h t ! w]$ ‘

:wqでファイルの変更を保存します。

編集後のファイルが正しく保存できているかを確認します。

[localadm@test ~]$ cat .bashrc
# .bashrc

# User specific aliases and functions

alias rm=’rm -i’
alias cp=’cp -i’
alias mv=’mv -i’

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

PS1='[u h t ! w]$ ‘

今回はここまで!では、また次回お会いしましょう!

問題は解決できましたか?

ご回答ありがとうございます。

ご回答受け付けました。ご協力ありがとうございました。