
目次 >> Shell
ここでは、Linuxのシェル関連の情報をまとめる。
/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を使ってコマンドを実行した場合、デフォルトでは実行元のユーザの環境変数は引き継がれないので、たとえばrootで実行したいプログラムのパスなどを設定してあっても、それがsudo時には反映されないので不便である。
環境変数を引き継ぐためには
/etc/sudoers
というファイルを編集する。このファイルの中に、
Defaults env_reset
という箇所がある。これは環境変数をリセットするという意味である。
すべてのユーザーで環境変数を引き継ぐのは、セキュリティ上よくないので、この箇所は変更しない。
代わりに、引き継ぎたいユーザ(この場合、ユーザー名はhoge)を下記のように指定する。
Defaults:hoge !env_rese