2019年11月18日月曜日

環境変数の設定方法


概要

Linux上で操作をする際に使用する変数に、シェル変数と環境変数があります。
シェル変数は設定をしたプロセスでのみ有効な変数であるのに対して環境変数は別のプロセスにも引き継がれます。
環境変数の設定方法と、表示方法について整理します。
また、よく使うPATHの環境変数についても整理します。

要点

  • 環境変数の表示方法
  • 環境変数を表示するにはprintenvコマンドを使います。
    
     $ printenv
     SHELL=/bin/bash
     LANGUAGE=ja_JP.UTF-8
     NO_AT_BRIDGE=1
     PWD=/home/pi
     LOGNAME=pi
     XDG_SESSION_TYPE=tty
     HOME=/home/pi
    
     【省略】
    
     LC_ALL=ja_JP.UTF-8
     PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
     DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
     MAIL=/var/mail/pi
     SSH_TTY=/dev/pts/0
     TEXTDOMAIN=Linux-PAM
     _=/usr/bin/printenv
    
    

    個別に表示する場合は「echoコマンド $変数名」を使って表示することもできます。
    
     $ echo $LANG
     ja_JP.UTF-8
    
    

  • 環境変数の設定方法
  • 環境変数を設定する際には「変数名=値」とします。以下の例はLANGの変数を「en_US.UTF-8」に設定しています。
    
     $ echo $LANG
     ja_JP.UTF-8
     $
     $ LANG=en_US.UTF-8
     $
     $ echo $LANG
     en_US.UTF-8
    
    
  • 環境変数の設定方法
  • 環境変数を引き継ぐ場合にはexportコマンドが必要です。
    以下は環境変数を設定したけど、exportしてないから子プロセスに引き継がれなくて、exportしたら環境変数が引き継がれた様子です。

    
     $ NAME=aaa
     $ echo $NAME
     aaa
     $ bash ★子プロセスへ移動
     $ echo $NAME ★表示されない
     $ exit
     $
     $ echo $NAME
     aaa
     $ export NAME
     $ bash ★子プロセスへ移動
     $ echo $NAME ★表示されてる
     aaa 
    
    
  • 主な環境変数

  • 変数名 説明
    PWD カレントディレクトリの絶対パス
    PATH 参照しているコマンドのパス
    HOME ユーザのホームディレクトリ
    PS1 プロンプトを定義
    PS2 2次プロンプトを定義
    HISTFILE コマンド履歴を格納するファイルを定義
    LANG 言語情報
    HOSTNAME ホスト名
    USER 現在のユーザ名
    HISTSIZE コマンド履歴の最大値
    LAGNAME ログインシェルのユーザ名

  • 環境変数PATHについて
  • PATHの環境変数を表示すると以下のようになっていました。
    
     $ echo $PATH
     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
    
    
    これは、このユーザが以下のフォルダにあるコマンドを相対パスで実行できることを示しています。
    • /usr/local/sbin
    • /usr/local/bin
    • /usr/sbin
    • /usr/bin
    • /sbin
    • /bin
    • /usr/local/games
    • /usr/games

    なので、例えば実行できるコマンドを追加してパスを通す必要が出てきたときは、この環境変数PATHにコマンドのパスを追加します。

0 件のコメント:

コメントを投稿