2014年4月18日 星期五

樹苺派的 shell

跟市圖借的 "Linux Shell 程式設計實務" 已放在書架月餘, 趁著昨日 "心猿意馬症" 發作, 突然把玩樹苺派, 於是拿起來翻閱, 最前面講到 Linex Shell 版本, 馬上連線到主機看看, 果然 Rasbian 預設 Shell 是 Bash, 昨晚更新後為 4.2.37(1) 版 :

login as: pi
pi@192.168.2.107's password:
Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Apr 18 00:08:35 2014 from 192.168.2.108

首先檢查預設是哪一種 shell :

pi@raspberrypi ~ $ echo $SHELL
/bin/bash

是 bash 沒錯, 但 list /bin/sh 卻顯示 dash, 而非 bash, why?

pi@raspberrypi ~ $ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Jan  1  1970 /bin/sh -> dash


檢查 bash 版本 :

pi@raspberrypi ~ $ echo $BASH_VERSION
4.2.37(1)-release

是 4.2.37 版. 

pi@raspberrypi ~ $ pwd
/home/pi

檢查 Linux 更新來源 (在 /etc/apt/) : 

pi@raspberrypi ~ $ ls -l /etc/apt
total 36
drwxr-xr-x 2 root root 4096 Apr 17 23:07 apt.conf.d
drwxr-xr-x 2 root root 4096 Mar 21  2013 preferences.d
-rw-r--r-- 1 root root   82 Sep 26  2013 sources.list
drwxr-xr-x 2 root root 4096 Jan  1  1970 sources.list.d
-rw------- 1 root root 1200 Sep 26  2013 trustdb.gpg
-rw------- 1 root root 4669 Sep 26  2013 trusted.gpg
-rw------- 1 root root 2424 Sep 26  2013 trusted.gpg~
drwxr-xr-x 2 root root 4096 Mar 21  2013 trusted.gpg.d

顯示 sources.list 內容為連線 Rasbian 官網更新 wheezy :

pi@raspberrypi ~ $ cat /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi

以下一邊做閱讀整理, 一邊實際操作 RPi 看看 :

Shell 是啥?

Shell=使用者與 Linux kernel 之間的溝通介面, 例如 DOS 是 Windows 的 shell, 但它只是命令直譯器 + 批次檔功能, 而 Linux shell 選擇性多, 且是一種程式語言, 是 Linux 系統管理程式語言的工具, 也是 Linux 作業系統的三個部份之一 :
  1. Kernel
  2. Shell
  3. 工具程式
常見的 shell 有 :
  1. bash shell (Linux 套件多使用此)
  2. Korn shell (OpenBSD/NetBSD 採用)
  3. C shell (FreeBSD 採用)
Shell 的發明者 : Steve Bourne, 其 Bourne shell 在 UNIX 第七版開始使用 (1979). 而 Linux 所用的 Bash shell 是其變種 (1988), 原作者 Brian Fox, 其官網在 :

# http://www.gnu.org/software/bash

Bash 有兩種工作模式 :
  1. 互動模式 (人工操作模式)
  2. Shell script 模式 (自動化模式)

列出 RPi 根目錄下的檔案 : ls /

pi@raspberrypi ~ $ ls /
bin   dev  home  lost+found  mnt  proc  run   selinux  sys  usr
boot  etc  lib   media       opt  root  sbin  srv      tmp  var

第一個 shell script :

照書中說明用 vi 或 nano 編輯一個最簡單的 shell script :

echo '哈囉!世界, hello world'

存成 hello.sh, 但不能直接執行 hello.sh, 因為它沒有執行權限, 會出現 command not found :

pi@raspberrypi ~ $ hello.sh
-bash: hello.sh: command not found

須用 chmod 改為可執行 :

pi@raspberrypi ~ $ chmod +x hello.sh
pi@raspberrypi ~ $ ls -l
total 44
drwxr-xr-x 2 pi pi 4096 Jan  1  1970 Desktop
drwxr-xr-x 3 pi pi 4096 Feb 13 19:50 Documents
-rwxr-xr-x 1 pi pi   34 Apr 18 22:49 hello.sh

輸入 hello.sh 還是 command not found, 因為必須在前面加上 ./ 表示 hello.sh 是在目前目錄下 :

pi@raspberrypi ~ $ ./hello.sh
哈囉!世界, hello world

原來 shell script 這麼簡單 ! (還沒遇到難的吧?)

沒有留言 :