Go to main content
Oracle® Solaris 11.3 のユーザーアカウントとユーザー環境の管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

ユーザーの作業環境について

ユーザーのホームディレクトリの設定には、ユーザーのログインシェルにユーザー初期設定ファイルを提供することも含まれます。ユーザー初期設定ファイルは、ユーザーがシステムにログインしたあとにユーザーのために作業環境を設定するシェルスクリプトです。基本的にシェルスクリプトで行えるタスクはどれもユーザー初期設定ファイルで実行できます。ただし、ユーザー初期設定ファイルのプライマリジョブはユーザーの検索パス、環境変数、ウィンドウ表示環境などのユーザー作業環境の特性を定義することです。次の表に示すように、各ログインシェルには、1 つまたは複数の、固有のユーザー初期設定ファイルがあります。bash シェルと ksh93 シェルの両方で、デフォルトのユーザー初期設定ファイルは /etc/skel/local.profile であることに注意してください。

表 7  bash および ksh93 のユーザー初期設定ファイル
シェル
ユーザー初期設定ファイル
目的
bash
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
ログイン時のユーザー環境を定義します
ksh93
/etc/profile
$HOME/.profile
ログイン時のユーザー環境を定義します
$ENV
ログイン時のユーザー環境をファイル内に定義し、Korn シェルの ENV 環境変数によって指定します

これらのファイルを開始点として使用して変更し、すべてのユーザーに共通の作業環境を提供する標準のファイルセットを作成できます。異なるタイプのユーザーごとに作業環境を提供する場合にも、これらのファイルを利用できます。

さまざまなタイプのユーザーにユーザー初期設定ファイルのセットを作成する方法の手順については、ユーザー初期設定ファイルをカスタマイズする方法を参照してください。

サイト初期設定ファイルの使用方法

ユーザー初期設定ファイルは、管理者とユーザーの両者によってカスタマイズできます。この重要なタスクは、サイト初期設定ファイルと呼ばれる、一元管理され、大域的に配布されるユーザー初期設定ファイルによって実現します。サイト初期設定ファイルを使用して、ユーザーの作業環境に新しい機能を絶えず導入でき、しかもユーザーはユーザー初期設定ファイルをカスタマイズすることもできます。

ユーザー初期設定ファイルでサイト初期設定ファイルを参照するとき、サイト初期設定ファイルに対して行なったすべての更新は、ユーザーがシステムにログインするときかユーザーが新しいシェルを起動するとき自動的に反映されます。サイト初期設定ファイルでは、ユーザーを追加したときにはなかったサイト全体の変更をユーザーの作業環境に配布できます。

ユーザー初期設定ファイルでできるカスタマイズは、サイト初期設定ファイルでも行えます。これらのファイルは通常はサーバー、またはサーバーのグループにあり、ユーザー初期設定ファイルの最初の行に現れます。また、各サイト初期設定ファイルは、それを参照するユーザー初期設定ファイルと同じ型のシェルスクリプトでなければなりません。

bash または ksh93 ユーザー初期設定ファイル内でサイト初期設定ファイルを参照するには、ユーザー初期設定ファイルの先頭に次のような行を記述します。

. /net/machine-name/export/site-files/site-init-file

ローカルシステムへの参照を避ける

ユーザー初期設定ファイルに、ローカルシステムへの個々の参照を追加しないでください。ユーザー初期設定ファイルの設定は、ユーザーがどのシステムにログインしても有効になるようにしてください。

    例:

  • ユーザーのホームディレクトリをネットワーク上の任意の位置で利用できるようにするには、常に環境変数の値 $HOME を使用してホームディレクトリを参照してください。たとえば、/export/home/username/bin ではなく $HOME/bin を使用してください。$HOME 変数は、ユーザーが別のシステムにログインする場合でも有効で、その場合ホームディレクトリは自動マウントされます。

  • ローカルディスクのファイルにアクセスするには、/net/system-name/directory-name などの大域パス名を使用してください。システムが AutoFS を実行していれば、/net/system-name で参照されるディレクトリはすべてユーザーがログインする任意のシステムに自動的にマウントできます。

シェル機能

    この Oracle Solaris リリースでは、次のシェル機能および動作をサポートしています。

  • Oracle Solaris リリースのインストール時に作成されるユーザーアカウントには、デフォルトで GNU Bourne-Again Shell (bash) が割り当てられます。

  • 標準のシステムシェルである bin/sh は現在、Korn Shell 93 (ksh93) です。

  • デフォルトの対話型シェルは Bourne-again (bash) シェル (/usr/bin/bash) です。

  • bash シェルと ksh93 シェルはどちらもコマンド行編集機能を備えており、コマンドを実行する前にコマンドを編集できます。

  • デフォルトのシェルおよびパス情報を複数の方法で表示できます。

    • echo $SHELL コマンドおよび which コマンドを使用します。

      $ grep root /etc/passwd
      root:x:0:0:Super-User:/root:/usr/bin/bash 
      
      $ echo $SHELL
      /usr/bin/bash
      
      $ which ksh93
      /usr/bin/ksh93
    • pargs コマンドを使用します。

      ~$ pargs -l $$
      /usr/bin/i86/ksh93
  • ksh93 シェルには、.sh.version という組み込みの変数もあり、次のようにして表示できます。

    ~$ echo ${.sh.version}
    Version jM 93u 2011-02-08
  • 別のシェルに変更するには、使用するシェルのパスを入力します。

  • シェルを終了するには、exit と入力します。

次の表は、Oracle Solaris でサポートされているシェルオプションの説明です。

表 8  Oracle Solaris リリースの基本シェル機能
シェル
パス
Comments
Bourne-Again Shell (bash)
/usr/bin/bash
インストーラによって作成されるユーザーおよび root 役割のデフォルトシェル。
useradd コマンドによって作成されるユーザーと、root 役割のデフォルトの (対話型) シェルは /usr/bin/bash です。デフォルトのパスは /usr/bin:/usr/sbin です。
Korn シェル
/usr/bin/ksh
ksh93 は、この Oracle Solaris リリースのデフォルトのシェルです。
C シェルと拡張 C シェル
/usr/bin/csh および /usr/bin/tcsh
C シェルと拡張 C シェル
POSIX 準拠シェル
/usr/xpg4/bin/sh
POSIX 準拠シェル
Z シェル
/usr/bin/zsh
Z シェル

注 -  Z シェル (zsh) および拡張 C シェル (tsch) は、デフォルトではシステムにインストールされません。これらのシェルを使用するには、まず、必要なソフトウェアパッケージをインストールする必要があります。

Oracle Solaris OS に含まれるシェルで使用する、UNIX® のデフォルトのシステムプロンプトとスーパーユーザープロンプトを次に示します。コマンド例に示されるデフォルトのシステムプロンプトは、Oracle Solaris のリリースによって異なります。

表 9  シェルプロンプト
シェル
プロンプト
Bash シェル、Korn シェル、および Bourne シェル
$
Bash シェル、Korn シェル、および Bourne シェルのスーパーユーザー
#
C シェル
machine_name%
C シェルのスーパーユーザー
machine_name#

bash および ksh93 シェルの履歴

bash シェルと ksh93 シェルはどちらも、ユーザーが実行するすべてのコマンドの履歴を記録します。この履歴はユーザー単位で保持されます。つまり、履歴は複数のログインセッションにまたがって永続し、ユーザーのすべてのログインセッションを表現します。

たとえば、bash シェルを使用している場合、実行したコマンドの完全な履歴を次のように表示できます。

$ history
1 ls
2 ls -a
3 pwd
4 whoami
.
.
.

以前のコマンドの数を表示するには、コマンドに整数を含めます。

$ history 2
12 date
13 history

詳細は、history(1) のマニュアルページを参照してください。

bash および Korn シェル環境変数

bash シェルと ksh93 シェルは、シェルが認識している特殊な変数情報を環境変数として格納します。bash シェルで、現在の環境変数の完全なリストを表示するには、次のように declare コマンドを使用します。

$ declare
BASH=/usr/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINEND=()
BASH_SOuRCE=()
BASH_VERSINFO=([0]=''3'' [1]=''2'' [2]=''25'' [3]=''1''
[4]=''release'' [5]''
.
.
.

ksh93 シェルでは、bash シェルの declare コマンドに相当する set コマンドを使用します。

$ set
  COLUMNS=80
  ENV='$HOME/.kshrc'
  FCEDIT=/bin/ed
  HISTCMD=3
  HZ=''
  IFS=$' \t\n'
  KSH_VERSION=.sh.version
  LANG=C
  LINENO=1
  .
  .
  .

どちらのシェルでも、環境変数を出力するには echo または printf コマンドを使用します。例:

$ echo $SHELL
/usr/bin/bash
$ printf "$PATH\n"
/usr/bin:/usr/sbin

注 -  環境変数はセッション間で持続しません。持続的な環境変数値を設定するには、.bashrc ファイルに値を設定します。

シェルには次の 2 種類の変数があります。

環境変数

シェルによって生成されるすべてのプロセスにエクスポートされる変数を指定します。変数のエクスポートには export コマンドが使用されます。例:

export VARIABLE=value

これらの設定は env コマンドを使用して表示できます。PATH などを含む環境変数の一部が、シェルそのものの動作に影響を与えます。

シェル (ローカル) 変数

現在のシェルのみに影響を及ぼす変数を指定します。

ユーザー初期設定ファイルで、定義済み変数の値を変更するか、または追加の変数を指定することによって、ユーザーのシェル環境をカスタマイズすることができます。

次の表は、Oracle Solaris リリースで使用可能なシェルおよび環境変数の詳細について説明しています。

表 10  シェル変数と環境変数の説明
変数
説明
CDPATH
cd コマンドで使用する変数を設定します。cd コマンドの対象ディレクトリを相対パス名で指定すると、cd コマンドは対象ディレクトリをまず現在のディレクトリ (.) 内で検索します。対象ディレクトリが見つからない場合、CDPATH 変数内のパス名のリストが順に検索され、見つかると、ディレクトリの変更が行われます。CDPATH で対象ディレクトリが見つからなかった場合は、現在の作業ディレクトリは変更されません。たとえば、CDPATH 変数が /home/jean に設定されており、/home/jean の下に binrje の 2 つのディレクトリがあるとします。/home/jean/bin ディレクトリ内で cd doc と入力した場合、フルパスを指定していなくても、ディレクトリが /home/jean/doc に変更されます。
HOME
ユーザーのホームディレクトリへのパスを設定します。
LANG
ロケールを設定します。
LOGNAME
現在ログインしているユーザーの名前を定義します。LOGNAME のデフォルト値は、passwd ファイルに指定されているユーザー名にログインプログラムによって自動的に設定されます。この変数は参照用にのみ使用し、設定を変更してはいけません。
MAIL
ユーザーのメールボックスへのパスを設定します。
MANPATH
アクセスできるマニュアルページの階層を設定します。

注 -  Oracle Solaris 11 以降は、MANPATH 環境変数は不要になりました。man コマンドは、PATH 環境変数の設定に基づいて適切な MANPATH を決定します。

PATH
ユーザーがコマンドを入力したときに実行するプログラムについて、シェルが検索するディレクトリを順番に指定します。ディレクトリが検索パス上にない場合は、ユーザーはコマンドの絶対パス名を入力しなければなりません。
デフォルトの PATH は、ログインプロセスで .profile の指定どおりに自動的に定義され、設定されます。
検索パスの順序が重要です。同じコマンドが異なる場所にそれぞれ存在するときは、その名前で最初に見つかったコマンドが使用されます。たとえば、PATH がシェル構文で PATH=/usr/bin:/usr/sbin:$HOME/bin のように定義されており、sample というファイルが /usr/bin/home/jean/bin の両方にあるものとします。ユーザーが sample コマンドを、その絶対パスを指定しないで入力した場合は、/usr/bin で見つかったバージョンが使用されます。
PS1
bash または ksh93 シェルのシェルプロンプトを定義します。
SHELL
makevi、その他のツールが使うデフォルトシェルを設定します。
TERMINFO
代替の terminfo データベースが保存されているディレクトリに名前を付けます。/etc/profile または /etc/.login ファイルで TERMINFO 変数を使用します。詳細は、terminfo(4) のマニュアルページを参照してください。
TERMINFO 環境変数を設定すると、システムはまずユーザーが定義した TERMINFO パスを調べます。ユーザーが定義した TERMINFO ディレクトリ内に端末の定義が見つからなかった場合は、デフォルトディレクトリ /usr/share/lib/terminfo で定義を探します。どちらの場所でも定義が見つからなかった場合、端末は dumb として定義されます。
TERM
端末を定義します。この変数は、/etc/profile または /etc/.login ファイルで再設定するようにしてください。ユーザーがエディタを起動すると、システムはこの環境変数で定義される名前と同じ名前のファイルを探します。システムは、TERMINFO が参照するディレクトリ内を探して端末の特性を知ります。
TZ
タイムゾーンを設定します。タイムゾーンは、たとえば ls -l コマンドで日付を表示する場合に使われます。TZ をユーザーの環境に設定しない場合、システムの設定が使用されます。それ以外の場合は、グリニッジ標準時が使用されます。

Bash シェルのカスタマイズ

bash シェルをカスタマイズするには、ホームディレクトリにある .bashrc ファイルの情報を追加または変更します。Oracle Solaris のインストール時に作成される初期ユーザーは、PATHMANPATH、およびコマンドプロンプトを設定するための .bashrc ファイルを持っています。詳細は、bash(1) のマニュアルページを参照してください。

MANPATH 環境変数

MANPATH 環境変数は、man コマンドがリファレンスマニュアル (man) ページを探す場所を指定します。MANPATH はユーザーの PATH の値に基づいて自動的に設定されますが、通常、/usr/share/manusr/gnu/share/man が含まれます。

ユーザーの MANPATH 環境変数は、PATH 環境変数とは無関係に変更できることに注意してください。関連付けられたマニュアルページの場所と、ユーザーの $PATH 内のディレクトリが 1 対 1 で対応している必要ありません。

PATH 環境変数

ユーザーがフルパスを使用してコマンドを実行すると、シェルはそのパス名を使ってコマンドを探します。ただし、ユーザーがコマンド名しか指定しないと、シェルは PATH 変数で指定されているディレクトリの順でコマンドを探します。コマンドがいずれかのディレクトリで見つかれば、シェルはコマンドを実行します。

デフォルトのパスがシステムで設定されます。しかし、大部分のユーザーはそれを変更してほかのコマンドディレクトリを追加します。環境の設定や、正しいバージョンのコマンドまたはツールへのアクセスに関連して発生するユーザーの問題の多くは、パス定義の誤りが原因です。

PATH 変数を設定するためのガイドライン

    PATH 変数を設定する場合は、次のガイドラインに注意してください。

  • カレントディレクトリ (.) をパスに含める必要がある場合は、最後に配置してください。悪意のある人物が、改ざんされたスクリプトまたは実行可能ファイルをカレントディレクトリに隠す可能性があるため、パスにカレントディレクトリを含めることはセキュリティー上のリスクとなります。代わりに絶対パス名を使用することを検討してください。

  • 検索パスはできるだけ短くしておきます。シェルはパスで各ディレクトリを探します。コマンドが見つからないと、検索に時間がかかり、システムのパフォーマンスが低下します。

  • 検索パスは左から右に読まれるため、通常使用するコマンドをパスの初めの方に指定するようにしてください。

  • パスでディレクトリが重複していないか確認してください。

  • 可能であれば、大きなディレクトリの検索は避けてください。大きなディレクトリはパスの終わりに指定します。

  • NFS サーバーが応答しない場合に、システムが応答しなくならないようにするには、NFS マウントされたディレクトリの前にローカルディレクトリを配置します。この方法によって、不要なネットワークトラフィックも減少します。

ロケール変数

LANGLC の各環境変数は、ロケール固有の変換と表記をシェルに指定します。指定できる変換と表記には、タイムゾーンや照合順序、および日付、時間、通貨、番号の書式などがあります。さらに、ユーザー初期設定ファイルで stty コマンドを使って、端末のセッションが複数バイト文字をサポートするかどうかを指定できます。

LANG 変数は、ロケールのすべての変換と表記を設定します。ロケールの各種の設定を個別に行うには、次の LC 変数の LC_COLLATELC_CTYPELC_MESSAGESLC_NUMERICLC_MONETARY、および LC_TIME を使用します。


注 -  Oracle Solaris 11 はデフォルトで、UTF-8 ベースのロケールのみをインストールします。

次の表では、コア Oracle Solaris 11 ロケールの環境変数の値について説明します。

表 11  ロケール変数の値
ロケール
en_US.UTF-8
英語、米国 (UTF-8)
fr_FR.UTF-8
フランス語、フランス (UTF-8)
de_DE.UTF-8
ドイツ語、ドイツ (UTF-8)
it_IT.UTF-8
イタリア語、イタリア (UTF-8)
ja_JP.UTF-8
日本語、日本 (UTF-8)
ko_KR.UTF-8
韓国語、韓国 (UTF-8)
pt_BT.UTF-8
ポルトガル語、ブラジル (UTF-8)
zh_CN.UTF-8
簡体字中国語、中華人民共和国 (UTF–8)
es_ES.UTF-8
スペイン語、スペイン (UTF-8)
zh_TW.UTF-8
繁体字中国語、台湾 (UTF-8)
使用例 1  ロケールの設定

Bourne または Korn シェルのユーザー初期化ファイルでは、次の行を追加してください。

LANG=de_DE.ISO8859-1; export LANG

デフォルトのファイルアクセス権 (umask)

ファイルまたはディレクトリを作成する場合、ファイルまたはディレクトリに割り当てられているデフォルトのファイルアクセス権は、ユーザーマスクによって制御されます。ユーザーマスクは、初期設定ファイルで umask コマンドによって設定されます。現在のユーザーマスクの値は、umask と入力して Return キーを押すと表示できます。

    ユーザーマスクは、次の 8 進値で構成されます。

  • 最初の桁でそのユーザーのアクセス権を設定する

  • 2 桁目でグループのアクセス権を設定する

  • 3 桁目でその他 (「ワールド」とも呼ばれる) のアクセス権を設定する

最初の桁がゼロの場合、その桁は表示されません。たとえば、ユーザーマスクを 022 に設定すると、22 が表示されます。

設定する umask の値は、与えたいアクセス権の値を 666 (ファイルの場合) または 777 (ディレクトリの場合) から差し引きます。引いた残りが umask に使用する値です。たとえば、ファイルのデフォルトモードを 644 (rw-r--r--) に変更するとします。666 と 644 の差である 022 が、umask コマンドの引数として使用する値です。

次の表に、umask の値を示します。これは、umask の各 8 進値から作成される、ファイルとディレクトリのアクセス権を示しています。

表 12  umask 値のアクセス権
umask 8 進値
ファイルアクセス権
ディレクトリアクセス権
0
rw-
rwx
1
rw-
rw-
2
r--
r-x
3
r--
r--
4
-w-
-wx
5
-w-
-w-
6
--x
--x
7
--- (なし)
--- (なし)

次の例は、デフォルトのファイルアクセス権を rw-rw-rw- に設定します。

umask 000

ユーザー初期設定ファイルのカスタマイズ

次の例は、.profile ユーザー初期設定ファイルのサンプルを示しています。このサンプルファイルをテンプレートとして使用し、独自のユーザー初期設定ファイルをカスタマイズできます。この例では、特定のサイト用に変更する必要があるシステム名とパスを使用します。

使用例 2  .profile ファイル
PATH=$PATH:$HOME/bin:/usr/local/bin:/usr/gnu/bin: ユーザーのシェル検索パス 
MAIL=/var/mail/$LOGNAME ユーザーのメールファイルへのパス
NNTPSERVER=server1 ユーザーの時間/クロックサーバー
MANPATH=/usr/share/man:/usr/local/man マニュアルページへのユーザーの検索パス
PRINTER=printer1 ユーザーのデフォルトプリンタ
umask 022 ユーザーのデフォルトファイル作成アクセス権
export PATH MAIL NNTPSERVER MANPATH PRINTER 指定された環境変数をエクスポートする