🐿

[Mac]getconfで参照できる構成変数と結果の全一覧TSVの作成

2021/11/26に公開
  • 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