Closed7

minishell 勉強

bayamasabayamasa

envコマンド
env 引数なし : 今設定されている環境変数を一覧で表示する。
env 引数あり : 一時的に引数に記載されている環境変数を使う事ができる(パイプも可。ただしechoは使えなかった)。
引数は~=~という感じで記述する。もし=のlvalueが環境変数に存在する場合は、rvalueを上書き。もし存在しない場合は、引数をenvの末尾に新規追加する。
ただしそのコマンド実行が終了した場合、引数に追加した環境変数は失われる

bayamasabayamasa

export 環境変数に値を追加する
setenv的なものが存在しないので、environもしくはenvironを移したchar **に対して、文字列を追加していくことになる。
この場合だと、environのグローバル変数に直接値を入れ続けたらどうなるのか
→新規追加された値はヒープに値が確保されるらしい

bayamasabayamasa

export, env引数なしの挙動の違い
前提として、export引数ありの機能
exportで環境変数を保存する。形式key = valueみたいな感じ。
また以下のような実行も可能

export a
export a =
  • 出力方式
  1. envはenvironを並び替えないで直接出力する
  2. exportは接頭辞として "declere -x"がつく。valueの値はダブルクオーテーションがつく。またアルファベット順に並び替える。大文字→アンダーバー→小文字 (その他どの記号が追加できるか不明。ちなみに数字は無理)
  • exportした値の出力
    env
  1. $1 = $2といった方式でexportした場合、同じ形式で出力される。
  2. export a="b"と保存された場合でもダブルクオーテーションはつけないで出力する
  3. 以下のように=が存在しないexportをした場合は、envでは出力しない。
  4. exportされた値がどの列に入って出力されるかは不明 ← ここ調べるべき
export a 
  1. 以下のように=のみでexportされたときは、a=と表示される
export a =

export

  1. $1 = $2といった方式でexportした場合、$1 = "$2"として出力される。
  2. 常に並び替えが行われる
  3. export a="b"と保存された場合でもダブルクオーテーションはつけないで出力する
  4. 以下のように=が存在しないexportをした場合でもexportコマンドでは出力する。仮にexport lとした場合の出力はdeclare -x l
  5. 以下のように=のみでexportされたときは、a=""と表示される
export a =
このスクラップは2022/05/04にクローズされました