今回のポイント
- 変数の中にはあらかじめ特殊な意味を持ったものが環境変数として存在する
printenv
コマンドで何が環境変数かを調べることができる
それでは、特殊シェル変数についての理解を深めていきましょう。
printenvで確認
現在使用中のシェルの環境変数はprintenv
コマンドで確認することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ printenv SHELL=/usr/local/bin/bash ITERM_PROFILE=Default COLORTERM=truecolor XPC_FLAGS=0x0 TERM_PROGRAM_VERSION=3.3.12 SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.vTHhxSkGXD/Listeners TERM_SESSION_ID=w0t0p0:E7993702-0221-452C-A263-3992C50453C9 ITERM_SESSION_ID=w0t0p0:E7993702-0221-452C-A263-3992C50453C9 HOME=/Users/shiro LANG=ja_JP.UTF-8 TMPDIR=/var/folders/5y/7ccyyqnj3674cgw9jp3kh_y00000gn/T/ LC_TERMINAL=iTerm2 NVM_DIR=/Users/shiro/.nvm TERM=xterm-256color USER=shiro COLORFGBG=7;0 LC_TERMINAL_VERSION=3.3.12 SHLVL=1 NVM_CD_FLAGS= XPC_SERVICE_NAME=0 PHPENV_ROOT=/Users/shiro/.phpenv Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.atrULUkMEn/Render NVM_BIN=/Users/shiro/.nvm/versions/node/v8.14.0/bin __CF_USER_TEXT_ENCODING=0x0:1:14 TERM_PROGRAM=iTerm.app _=/usr/bin/printenv |
一部はプライベート情報なので省略してますが、環境変数としてセットされているのがいっぱい出てきました。
いくつかは、~/.bashrc
や~/.bash_profile
によって起動時にexport
コマンドでセットされているものもあります。
それ以外でデフォルトの環境変数となっているのが特殊シェル変数です。
それでは、紹介していきます。
HOME
HOME
は現在ログインしているユーザのホームディレクトリに対する絶対パスを格納しています。
1 2 |
$ echo $HOME /Users/shiro |
ホームディレクトリ直下のファイルを参照したい場合に使われたりします。
PWD
PWD
は現在コマンドを実行しているカレントディレクトリへの絶対パスを格納しています。
1 2 |
$ echo $PWD /Users/shiro/projects |
ディレクトリやファイルを作りたいときのルートディレクトリとしてこの変数を使ったりすることがあります。
SHELL
SHELL
は現在ログインしているユーザのログインシェル、より具体的には/etc/passwdに記述されているユーザが使用するシェルへの絶対パスが格納されています。
1 2 |
$ echo $SHELL /usr/local/bin/bash |
LINENO
LINENO
は現在実行しているシェルスクリプトファイルの行番号を格納しています。
echo-lineno.sh
1 2 3 4 5 6 |
#!/bin/bash echo $LINENO echo $LINENO |
実行、
1 2 3 |
$ sh echo-lineno.sh 3 6 |
まとめ
- シェルスクリプトにはデフォルトで定義されている環境変数として特殊シェル変数がある
printenv
コマンドで現在使える環境変数を知ることができる