shell 环境

常见的shell:

  • sh:Bourne Shell
  • tcsh:C Shell
  • ksh:Korn Shell
  • bash:Bourne Again Shell

shell 常见命令:

  • 查看本机已经安装的shell:
    • chsh -l
    • cat /etc/shells
  • 查看当前正在使用的shell:
    • echo $SHELL
  • 切换shell版本:
    • chsh -s /usr/bin/zsh
    • 修改 /etc/passwd 文件,即将 root:x:0:0:root:/root:/usr/bin/bash 中最后一位进行修改 root:x:0:0:root:/usr/bin/zsh ```bash $ cat /etc/shells #查看本机支持的shell /bin/sh #Bourne Shell /bin/bash #Bourne Again Shell /usr/bin/sh /usr/bin/bash

$ echo $SHELL #查看当前系统使用的Shell /bin/bash

  1. 安装 zsh
  2. ```bash
  3. $ yum install zsh
  4. $ which zsh #首先定位到zsh的绝对路径
  5. /usr/bin/zsh
  6. $ chsh -s /usr/bin/zsh
  7. Changing shell for root.
  8. chsh: Warning: "/usr/bin/zsh" is not listed in /etc/shells.
  9. Shell changed.
  10. $ head -n 1 /etc/passwd
  11. root:x:0:0:root:/root:/usr/bin/zsh

shell 变量

查看shell环境变量:

  • env / export:显示环境变量
  • set / declare:显示环境变量和自定义变量
    1. $ env
    2. USER=root
    3. .......省略
    4. _=/usr/bin/env #下划线变量 _ 表示用户上一次输入的命令的最后一个参数

设置shell环境变量:

  • export PATH=$PATH;/xxx :export 设置一个环境变量,注意前面的$PATH不能省略,否则会清空原来设置的环境变量

read 获取用户输入

获取标准输入或文件输入,并将信息存放到变量中:

  • read var
  • read -p “提示语” var:var指用来接受输入的变量
  • read var1 var2… :同时接受多个输入
  • read -t m:指定接受输入的时间,单位秒
  • read -s :隐藏用户的输入,如密码
    1. #!/bin/bash
    2. read -p "提示语" var
    3. echo "你的输入是:$var"
    1、如果输入的数据量少于变量的个数,那么多余的变量不会获取到数据,即变量值为空
    2、如果输入的数据量多于变量的个数,那么超出的数据都将复制给最后一个变量
    3、如果 read 后面没有写接受变量,则会将输入数据存放到一个 $REPLY 的变量

read 使用 -u 参数读取文件:

  1. #! /bin/bash
  2. read -p "请输入要打开的文件:" var
  3. echo "你要打开的文件:$var"
  4. # 创建文件描述符
  5. exec 3<$var
  6. # 通过文件描述符进行循环读取
  7. count=0
  8. while read -u 3 line
  9. do
  10. let count=$count+1
  11. echo "Line $count:$line"
  12. done
  13. echo "finished"
  14. echo "Line num is $count"
  15. # 关闭文件描述符
  16. exec 3<&-