見出し画像

40代ママ、駆け出しエンジニアになりたい 〜システム編〜#2

すっかり外は秋らしくなってきましたね ٩(ˊᗜˋ*)و
最近はベランダに住みついて、極小ベランダで自称べランピングを楽しんでいます!

で、日が空いてしまいましたが。。システム編ですね...
(前回の記事を復習... _φ(◎-◎ー))

今回のお題は... [自作シェル]を作ってみよう〜です!

シェルってなんだっけ??
「ユーザが入力したコマンドを受け取り OS に処理させるもの」
→そういう定義ならばつくるのは簡単!と、エンジニアぱいせんがいっております。

ちょっとRubyで書いてみるのよ...

(うちの会社のメイン言語はRuby on Rails なので...)

code:my_shell.rb
loop do                    # 無限ループ
  print "コマンドを入力してね> " # プロンプト表示
  data = gets              # 入力を待ち、入力された文字列を変数に格納
  if data.eql?("exit\n")   # "exit" と入力された場合はループを抜ける
     break
  end
  system(data)            # 入力された文字列をOSに丸投げ
end
以下のコマンドで実行する
ruby my_shell.rb  
 
#プロンプトが表示され、lsなどのコマンドを入力すれば実行される
# `exit` を入力したら終了する

スクリーンショット 2021-09-25 22.26.59

 とりあえず、作成できました!実行もできました!

次はログインシェルに変更です (9`・ω・)9

えっ、ログインシェルって??っていう感じですね。前置きカキカキ...

ログインシェル:ログインして最初に動き出すシェルのこと
途中で変更可能とのこと。
非ログインシェル:ログインしてから任意に適用するシェルのこと

で、ログインシェルにするためには、コンパイルしたプログラムじゃないとダメぽいので、Cで作り直し(ここは割愛...)

そして、ログインシェルに変更できる一覧はこちらに記載されています
/etc/shells

本題の...変更手順はこちら

/etc/shellsファイルに、作成した自作シェル(my_shell)を書き込みます。

$ sudo vi /etc/shells 
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/Users/.../my_shell # 絶対パスで追加

②ログインシェルを変更する

chsh -s /Users/.../my_shell
(パスワードを聞かれます)

③新しいターミナルは起動すると変更されていることが確認できる
ターミナルの上に[-my_shell]と表示されます。
(ちょっとスクショの調子が悪いので。。画像は割愛...)

④あとは、またchsh でもとのシェルに戻すように!(自分がbash)


今回は、これにておしまい。
シェル...今の季節同様、奥深し (。´・ω・)


この記事が気に入ったらサポートをしてみませんか?