質問: term環境変数のデフォルトはどこに設定されますか? デスクトップguiのgnomeターミナルエミュレーターでターミナルウィンドウを開くと、シェルterm環境変数はデフォルトで値xtermになります。私が使うなら ctl+alt+f1 コンソールのttyウィンドウに切り替え、echo $term値はlinuxに設定されます。私に尋ねる動機は、私の~/.bashrc file変数を使用して、カラーシェルが提供されているのか、それとも古き良き時代のモノクロであるのかを判断します。# set a fancy prompt (non-color, unless we know we "want" color) case "$term" in xterm-color) color_prompt=yes;; esac 入力すると、コンソールシェルとgnomeターミナルエミュレータシェルの両方でexport term=xterm-color source /.bashrc 両方のシェルがカラーモードに変わります(私が常に両方で発生させたいものです)。デフォルトのterm値はどこに設定してください。可能な場合、デフォルトを変更するのに最適な場所はどこですか?端末エミュレータguiには、デフォルトのterm値を選択または設定するためのものが何もないようです。export term=xterm-colorの上に~/.bashrcファイルですが、直感的にはこれは最善の解決策ではないことがわかり、google検索でまだ適切な答えが得られていません。ubuntu 15.04デスクトップエディション(debianベース)を実行しています。
回答: linuxの場合、init/main.cでこの環境が定義されています。static const char *argv_init[max_init_args+2] = { "init", null, }; const char *envp_init[max_init_envs+2] = { "home=/", "term=linux", null, }; 次にdo-execve()で呼び出されます:static int run_init_process(const char *init_filename) { argv_init[0] = init_filename; pr_info("run %s as init process\n", init_filename); return do_execve(getname_kernel(init_filename), (const char __user *const __user *)argv_init, (const char __user *const __user *)envp_init); } このpr_info()は次のように表示されます:]# dmesg |grep 'run' [ 1.291323] run /init as init process したがって、デフォルトは最初から「term = linux」です。