LoginSignup
3
1

More than 1 year has passed since last update.

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

Posted at
  • 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で整理。
構成変数名  値
*****  *
*****  *
*****  *

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1