Twitterに投稿 はてなブックマークに追加 Yahoo!ブックマークに追加 Google Bookmarksに追加

目次 >> Shell

Shell

ここでは、Linuxのシェル関連の情報をまとめる。

bashの設定

全ユーザーに適応される設定

/etc/profileで設定する。

各ユーザー毎の設定

ログイン時には、~/.bash_profileがあれば読み込み、無ければ、~/.bash_loginがあれば読み込み、無ければ~/.profileが読み込まれる。

また、bashが起動するたびに、.bashrcが読み込まれる。

なお、ログアウト時には、~/.bash_logoutが読み込まれる。

環境変数の設定方法

2通りある。

一つ目は、

export 環境変数=値

二つ目は

シェル変数=値
export シェル変数

シェル変数、環境変数の表示

setコマンドでシェル変数を、printenvで環境変数を表示できる。

ヒストリ関係

HISTSIZEはヒストリに保存するコマンド数を指定する。
HISTFILESIZEはヒストリファイルに保存するコマンド数を指定する。
HISTCONTROLはignoredupsで重複するものを記録しない。ignorespaceで空白などで始まるコマンドは記録しない。ignorebothでその両方とも指定。

.bashrcなどには下記のように書く

HISTSIZE=10000
HISTFILESIZE=10000
HISTCONTROL=ignoreboth
export HISTSIZE HISTFILESIZE HISTCONTROL

コマンド履歴に残したくないコマンドは

HISTIGNORE=ls:pwd:history
export HISTIGNORE

のように:で区切って書いておくと、記録されなくなる。

パス

パスを追加するには、例えば/home/hogehogeというパスを追加するには、

PATH="$PATH":/home/hogehoge

言語の設定

使用しているターミナルによっては、英数字以外の文字で文字化けする場合がある。

下記の設定をすると、英語のみになる。

export LANG=C

もしくは

unset LANG

で解除してもよい。

シェルスクリプト

foo.shファイルを実行するには、もしパーミッションで実行可能な場合は./foo.shで実行できる。実効権限がない場合はsh foo.shで実行できる。
foo.shで設定される環境変数を反映させたい場合は、source foo.shとする。

sudoでコマンド実行時に環境変数を引き継ぐには

sudoを使ってコマンドを実行した場合、デフォルトでは実行元のユーザの環境変数は引き継がれないので、たとえばrootで実行したいプログラムのパスなどを設定してあっても、それがsudo時には反映されないので不便である。

環境変数を引き継ぐためには

/etc/sudoers

というファイルを編集する。このファイルの中に、

Defaults        env_reset

という箇所がある。これは環境変数をリセットするという意味である。
すべてのユーザーで環境変数を引き継ぐのは、セキュリティ上よくないので、この箇所は変更しない。
代わりに、引き継ぎたいユーザ(この場合、ユーザー名はhoge)を下記のように指定する。

Defaults:hoge        !env_rese

本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて10.04、11.04のようにバージョン番号をつけて区別しています。MandrivaはMandriva Linuxを表します。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2011 Chikuma Engineering Co., Ltd. All Rights Reserved.