🐿
[Mac]getconfで参照できる構成変数と結果の全一覧TSVの作成
- LinuxあるいはMacでシステム構成変数を参照するためには
getconf
コマンドがしばしば用いられる。 - ビット数や最大値等の参照に便利だが、指定する構成変数を調べる必要がある。
- 簡単に全ての変数を知るためにはaオプションが必要だが、Macでは利用できない。
- そのため今回はMacのgetconfで参照できる構成変数及び結果の全一覧TSVリスト作成のコマンドを記録する。
環境
- Mac 20.3.0
結果
- 結果の記述は以下の通り。
strings $(command -v getconf) |
grep -E '^_?[0-9A-Z_]+$' |
awk '{printf($1"\t");system("getconf "$1"")}'
*******************
LONG_BIT 64
LONG_MAX 9223372036854775807
LONG_MIN -9223372036854775808
MB_LEN_MAX 6
SCHAR_MAX 127
SCHAR_MIN -128
********************
- 結果をファイルにTSV形式で格納しておけば、検索や抽出が便利。
- ※定義されているがエラーとなる構成変数もあるため、エラー出力も一緒にファイルへ格納する。
# ファイルへ格納
strings $(command -v getconf) |
grep -E '^_?[0-9A-Z_]+$' |
awk '{printf($1"\t");system("getconf "$1"")}' &> all_getconf_data.tsv
# 検索
grep 'DARWIN' all_getconf_data.tsv
DARWIN_USER_DIR /var/folders/76/*****
DARWIN_USER_TEMP_DIR /var/folders/76/****
DARWIN_USER_CACHE_DIR /var/folders/76/****
# 抽出
grep 'LONG_BIT' all_getconf_data.tsv | cut -f 2
64
内容
変数一覧取得
- まずgetconfのプログラムを確認するために
command -v
でファイル名を出力。 - 名前が
/usr/bin/getconf
のバイナリファイルのため、strings
コマンドで中身を可視化する。 - 中身は「簡単な説明・利用方法・構成変数一覧」とまとめらている。
- 構成変数一覧は大文字でまとめられているため、grepで正規表現で取り出すと以下のような一覧の出力が可能。
- ※Linuxではより多くの情報で記述されているため、更に絞り込む必要がある。
PATH
POSIX_V6_ILP32_OFF32_CFLAGS
POSIX_V6_ILP32_OFF32_LDFLAGS
POSIX_V6_ILP32_OFF32_LIBS
*******
*******
実行及び整理
- 参照できる構成変数一覧が出力されたため、一つ一つにawkでgetconfコマンドを実行。
- その際に出力が以下のような対応表のTSVになるようにawkで整理。
構成変数名 値
***** *
***** *
***** *
Discussion