Twitterに投稿 はてなブックマークに追加 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とする。

シェルスクリプトの変数内の改行を反映させるには?

シェルスクリプトの変数に改行を含めることはできる。

$ hoge="aaa
> bbb
> ccc"

これをechoなどで表示させる際に、変数をクォーテーションで囲むかどうかで結果が変わってくる。
クォーテーションで囲まない場合、下記のように改行は無視される。

$ echo ${hoge}
aaa bbb ccc

一方クォーテーションで囲むと、改行も含めて表示される。

$ echo "${hoge}"
aaa
bbb
ccc

乱数を生成するには?

もっとも簡単なのは

$ echo $RANDOM
29373

である。もしより精度の高い、/dev/randomや/dev/urandomを使いたい場合は、

$ od -An -N2 -i /dev/random
43874

あるいは

$ od -vAn -N4 -tu4 < /dev/urandom
3557431341

を使うとよい。なお、/dev/randomは/dev/urandomよりより良い乱数を生成するが、多数生成する場合、待たされることがある。一般的には、/dev/urandomがおすすめである。

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は、必要に応じて20.04、21.04のようにバージョン番号をつけて区別しています。

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