Upgrade to Pro — share decks privately, control downloads, hide ads and more …

bashの組み込みコマンド

 bashの組み込みコマンド

以下動画のテキストです
https://youtu.be/6oVvcnwRUa0

842515eaf8fbb2dfcc75197e7797dc15?s=128

Satoru Takeuchi
PRO

June 24, 2022
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. bashの組み込みコマンド Jun. 24th, 2022 Satoru Takeuchi twitter: satoru_takeuchi

  2. bashの組み込みコマンドとは • bash上で”help”を実行すると出てくるコマンドたち • 新規プロセスを生成せずにbash自身が処理 • 種類 ◦ “if”や”for”などの制御構文 ◦

    echoなどの頻出コマンド ◦ waitやcdなどの組み込みコマンドでなければ実現できないもの
  3. echoはなぜ組み込みコマンドなのか • bashスクリプト内で頻出するので高速なほうが都合がよい ◦ /bin/echoを実行するとbashを親とした新規プロセスの生成が必要 ◦ 組み込みコマンドなら新規プロセスの生成が不要 • 実験: 組み込みコマンド(echo)

    vs 実行ファイル(/bin/echo) ◦ bashスクリプト内で10000回実行したときの所要時間を比較 • 📝 実はtimeも組み込みコマンド ◦ しかも組み込みコマンドと実行ファイルで微妙にデフォルト出力が違う
  4. waitはなぜ組み込みコマンドなのか • “wait”は子プロセスの終了を親が待つシステムコール ◦ 子ではないプロセスの終了は待てない • “man 2 wait”より抜粋 ◦

    All of these system calls are used to wait for state changes in a child of the calling process, and obtain information about the child whose state has changed.
  5. cdはなぜ組み込みコマンドなのか • “cd”は内部的に”chdir”システムコールを呼ぶ • “chdir”はシステムコールを呼んだプロセスのワーキングディレクトリを変更 • “man 2 chdir”より抜粋 ◦

    chdir() changes the current working directory of the calling process to the directory specified in path. • 親プロセス(bash)には影響を及ぼさない
  6. まとめ • bashには組み込みコマンドが存在する • 組み込みコマンドにする目的はさまざま ◦ 高速化 ◦ そもそも実行ファイルでは実現できない