物理と数学とITのあれこれ

物理や数学、パソコンの設定とかプログラミングとかいろいろ書きなぐってます。

Linuxで自分の使ってるシェルの種類を確認するときのメモ

自分の使ってるシェルを確認

$ echo $SHELL

 

で現在使ってるシェルの種類がわかる。自分の環境だと。

/bin/tcsh

とでた。

cshを拡張、バグ修正したものがtcshらしい

cshtcshcsh系と呼ばれ、

shbashkshsh系と呼ばれる。文法とかも微妙に違う。

zshはどっちもいけるらしい。

 

$ cat /etc/shells で使えるシェルを確認。自分の環境だと

 

/bin/sh

/bin/bash

/sbin/nologin

/bin/ksh

/bin/zsh

/bin/tcsh

/bin/csh

/usr/bin/ksh

/usr/local/bin/tcsh

 

と出てくる。大抵のシェルは使えるみたいだ。cshの文法で適当にスクリプト書いてみる

 

test.csh

 

#! /bin/csh

set a=0

echo $a

 

csh ./test.csh

0が出力される。bashでやりたければ

a=0

echo $a

 

sh ./test.csh とか

bash ./test.csh

 

とかやればbashでもまわる。拡張子が.cshでも中身がbashの文法であれば普通にbashとして

まわった。どゆこと?と思ったが、どうやら拡張子は見やすくするために付けるだけであまり意味を持たないらしい。

まぁでも拡張子が.cshなのに中身がbashなのは混乱を招くので、test.shとかしといたほうがいいな。

ちなみに最初の#! /bin/cshcshで回す時に必要だと思ってたけど、これも別になくてもいいらしい。

 

 

次に実行権限を与える。

$ chmod +x test.csh

 

これで

./test.csh

だけで実行できるようになる。#! bin/cshでcshのpathを指定しているのでcshで実行できるみたいだ。

今まで理解がなあなあで使ってた部分がちょっとすっきりした。