この記事では基本的なコマンドラインについて説明します。
スポンサードサーチ
シェル
Linuxではコマンドを入力するとそれに対応したプログラムが実行され、結果が表示されます。ユーザーからのコマンドを受け付け、必要なプログラムを実行しているのはshellというプログラムです。

シェルにもいくつか種類があります。
・Bourneシェル
UNIXで標準的なシェルでこれを改良したものがbashです。bashは多くのLinuxディストリビューションで標準シェルになっています。
・Cシェル(csh)
C言語に似たスクリプトが利用できるシェル。cshを拡張したtcshもあり、LinuxではCシェルとして使われているのはtcshです。
・Kornシェル(ksh)
Bourneシェルを拡張したシェル。kshにbashやtcshの機能を取り入れたzshという高機能シェルも存在する。
利用可能なシェルは/etc/shellsファイルで確認可能。また、chshコマンドを使ってデフォルトのシェルも変更可能
システムにログインした直後に起動されるシェルをログインシェルと呼びます。ユーザーごとのログインシェルは下記のコマンドで確認可能です。私の場合はbashでした。
user@computer$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
initial:x:1000:1000:,,,:/home/initial:/bin/bash
ユーザーがログインするとシェルは$もしくは#などのプロンプトを表示して入力待機します。bashでは$が一般ユーザーで、rootの場合は#が表示されます。ここの表示形式設定は自由に設定でき、環境変数PS1にて行うことが出来ます。
スポンサードサーチ
覚えておきたい操作と設定
ここでは基本的に覚えてほしい操作を書いておきます。
補完機能
シェルの補完機能を使うことで入力ミスを軽減できます。
例えば、test.txtの中身をcatで見たいとします。まずはlsで確認すると・・・
ls
Desktop Downloads Public a.sh dir script.deb.sh Diary Music Templates a.txt dir2 file.txt test.txt Documents Pictures Videos d.sh docker.sh remote.txt thinclient_drives
沢山あって、見にくいですね。そこで
cat test
の状態から、tabを押すと
cat test.txt
と表示されましたね!これがlinuxの補完機能です。便利な機能なのでどんどん使っていきましょう。
その他にも下記のコマンドは是非を覚えておきたいので、マスターしましょうね。
コマンド | 操作説明 |
Tabキー |
コマンドやディレクトリ名を補完する
|
Ctrl+Aキー |
行の先頭へカーソルを移動する
|
Ctrl+Eキー |
行の最後へカーソルを移動する
|
Ctrl+Dキー |
カーソル部分を1文字削除する、ログアウトする
|
Ctrl+Hキー |
カーソルの左を1文字削除する(Backspaceキーと同じ)
|
Ctrl+Lキー |
画面をクリアしてカレント行を再表示する
|
Ctrl+Cキー | |処理を中断する |
Ctrl+Sキー | 画面への出力を停止する |
Ctrl+Qキー | 画面への出力を再開する |
Ctrl+Zキー |
処理を一時停止(サスペンド)する
|
スポンサードサーチ
シェル変数と環境変数
シェルはユーザーとLinuxシステムとの対話を図ります。そのためには、ユーザーのホームディレクトリやログイン名など、ユーザーに関する情報をしっておく必要があります。Linuxでは、このような情報は変数に保存されます。変数は、その有効範囲(スコープ)によって、シェル変数と環境変数に分かれます。
・シェル変数のスコープ
その変数を定義したシェル・プロセスのみです。シェル・プロセスを終了すれば、シェル変数は勿論失われます。別のシェルを新しく立ち上げた場合は、新しいシェルから元のシェルで定義した内容を参照できません。
・環境変数のスコープ
その変数を定義したシェル上、およびそのシェルで実行されるプログラムにも引き継がれる変数です。環境変数はシェル変数をexportコマンドでエクスポートすることで設定します。
その他にもよく利用される環境変数は以下になります。
環境変数 | 説明 |
EDITOR |
デフォルトのエディタのパス
|
HISTFILE |
コマンド履歴を格納するファイル
|
HISTFILESIZE |
HISTFILEに保存する履歴数
|
HISTSIZE |
コマンド履歴の最大値
|
HOME |
カレントユーザーのホームディレクトリ
|
HOSTNAME | ホスト名 |
LANG |
ロケール(言語処理方式)
|
LOGNAME |
ログインシェルのユーザー名
|
PATH |
コマンドやプログラムを検索するディレクトリリスト
|
PS1 |
プロンプトの表示文字列
|
PS2 |
複数行にわたる入力時のプロンプト
|
PWD |
カレントディレクトリ
|
TERM |
端末の種類
|
USER |
現在のユーザー
|
変数を定義する
変数の定義する方法は下記になります。
変数名=値
この時に=の前後にスペースを入れないようにしてください。
定義された変数はechoで確認できるので試してみましょう。
~user@computer$ echo name=’test’
name=test
~user@computer$ name=’test’
~user@computer$ echo $name
test
消したいときはunsetコマンドを使いますが、変数名の先頭に$はつけません。
~user@computer$ unset name #先ほどセットした値を削除
~$echo $name
##ここには何も表示されない
定義されている環境変数の一覧を表示するにはenvやprintenvを使用します。また、環境変数とシェル変数を両方表示したい場合はsetを使用します。
次にexportを使ってシェル変数と環境変数の違いを見ていきます。
export 変数名=値
~user@computer$ VAR=lpic #VAR変数を定義(シェル変数)
~user@computer$ echo $VAR
lpic
~user@computer$ bash #新たにbashを起動
~user@computer$ echo $VAR #VAR変数の内容を出力
##何も表示されない
~user@computer$ exit #bashを抜ける
exit
~user@computer$ export VAR #VAR変数をエクスポート
~user@computer$ bash#bashを起動
~user@computer$ echo $VAR
lpic
環境変数PATH
プロンプトが表示されている状態でコマンドを入力すると、シェルはそのコマンド(プログラム)を実行できます。
コマンドには二種類あります。内部コマンドと外部コマンドです。
- 内部コマンド・・・シェル自体に組み込まれている ex.cd
- 外部コマンド・・・独立したプログラムとして存在 ex.ls
外部コマンドの場合は、シェルはそのコマンドがどこに置かれているかを、PATHに指定されたディレクトリを順番に調べて見つけます。
コマンドが置かれたディレクトリを環境変数に追加することをパスを通すと言います。パスの通っていない場所に置かれているコマンドやプログラムを実行する場合は絶対パス(フルパス)もしくは相対パスを指定する必要があります。
パスについてはこちらのサイトに詳しく書いてあるので、よくわからなかった方は参考にしてください。
例えば、一般ユーザーが/usr/sbin/useraddコマンドを実行しようとしても、一般ユーザの環境変数PATHには/usr/sbinが記載されていないので、コマンドが見つからずにエラーになる場合もあります。
~user@computer$ echo $PATH |grep /usr/sbin
/usr/local/sbin:/usr/local/bin:/usr/sbin
私の場合はありました。(笑)つまり、ここに指定されている/usr/local/sbinを探しに行って、useraddコマンドが見つけて実行しているということですね。
いい例が見つからないのですが、ここに指定されていないと、コマンドを入力しても実行されません。
PATH変数に含まれてないディレクトリにあるコマンドでも、絶対パスを指定すれば実行することができます(コマンドを実行する権限が必要です。
/user/sbin/useradd -D
環境変数PATHにパスを追加するには、~/.bash_profileなどの環境設定ファイルのPATH設定を修正するか、次のコマンドを使用する。
PATH=$PATH:追加するディレクトリ名
次の例では、/opt/binディレクトリを環境変数PATHの末尾に追加しています。
PATH=$PATH:/opt/bin
シェルは、環境変数PATHの先頭から順にディレクトリを検索します。もし、同名のプログラムがあった場合は、環境変数PATHの先頭に近いほうのディレクトリに置かれているプログラムが実行されます。
環境変数PATHに追加したいパスだけを指定します。
PATH=/opt/bin
このようにしてしまうと、パスが通っているディレクトリは/opt/pathだけになってしまい、外部コマンドが使えなくなります。
通常、環境変数PATHにはカレントディレクトリを含めません。そのため、カレントディレクトリにあるプログラムを実行するには、カレントディレクトリを意味する ./ を明示します。次の例では、カレントディレクトリにあるプログラムmycommandを実行しています。
./mycommand
スポンサードサーチ
まとめ
今回の記事では、シェルの基礎から、コマンドライン、シェル変数と環境変数についてまとめました。次回はコマンドラインについてまとめていきたいと思いますので、よろしくお願いします。
コメントを残す