• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > linux Shell入门:掌握Linux,OS X,Unix的Shell环境

linux Shell入门:掌握Linux,OS X,Unix的Shell环境

作者:mdxy-dxy 字体:[增加 减小] 来源:互联网

mdxy-dxy 通过本文主要向大家介绍了linux shell脚本,linux shell编程,linux shell脚本攻略,linux shell脚本实例,linux shell脚本编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在Linux或类Unix系统中,每个用户和进程都运行在一个特定环境中。这个环境包含了变量、设置、别名、函数以及更多的东西。下面是对Shell环境下一些常用命令的简单介绍,包括每个命令如何使用的例子,以及在命令行下设定你自己的环境来提高效率。

找出你当前的shell

在终端应用中输入下面命令中的任意一个:

ps $$
ps -p $$

或者

echo "$0"

输出范例:

图1: Finding out your shell name

图1:找出当前的shell

找出所有已安装的shell

找到已安装shell的完整路径:

type -a zsh
type -a ksh
type -a sh
type -a bash

输出范例:

Fig.02: Finding out your shell path

图2:找出shell的路径

文件/etc/shells里包含了系统所支持的shell列表。每一行代表一个shell,是相对根目录的完整路径。用这个cat命令来查看这些数据:

cat /etc/shells

输出范例:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
 
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish

临时改变当前shell

只需要输入shell的名字。在下面的例子里,我从bash切换到了zsh:

zsh

这只是临时改变了系统shell。也叫做子shell。要从子/临时shell退出,输入下面的命令或者按下CTRL-D:

exit

找出子shell的层级或临时shell的嵌套层级

每个bash实例启动后,变量$SHLVL的值都会加一。输入下面的命令:

echo "$SHLVL"

示例输出:

Fig. 03: Bash shell nesting level (subshell numbers)

图3:Bash shell嵌套层级(子shell数目)

通过chsh命令永久变更系统shell

想要把当前系统shell从bash永久换成zsh?试试这个:

chsh -s /bin/zsh

想把其他用户的shell从bash永久换成ksh?试试这个:

sudo chsh -s /bin/ksh userNameHere

查看当前的环境变量

你需要用到:

env
env | more
env | less
env | grep 'NAME'

示例输出:

TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/6x/45252d6j1lqbtyy_xt62h40c0000gn/T/
Apple_PubSub_Socket_Render=/tmp/launch-djaOJg/Render
TERM_PROGRAM_VERSION=326
TERM_SESSION_ID=16F470E3-501C-498E-B315-D70E538DA825
USER=vivek
SSH_AUTH_SOCK=/tmp/launch-uQGJ2h/Listeners
__CF_USER_TEXT_ENCODING=0x1F5:0:0
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/go/bin:/usr/local/sbin/modemZapp:/Users/vivek/google-cloud-sdk/bin
__CHECKFIX1436934=1
PWD=/Users/vivek
SHLVL=2
HOME=/Users/vivek
LOGNAME=vivek
LC_CTYPE=UTF-8
DISPLAY=/tmp/launch-6hNAhh/org.macosforge.xquartz:0
_=/usr/bin/env
OLDPWD=/Users/vivek

下面是bash shell里一些常见变量的列表:

Fig.04: Common bash environment variables

图4:常见bash环境变量

注意:下面这些环境变量没事不要乱改。很可能会造成不稳定的shell会话:

SHELL

UID

RANDOM

PWD

PPID

SSHAUTHSOCK

USER

HOME

LINENO

显示环境变量的值

使用下面任意一条命令显示环境变量HOME的值:

## 使用printenv ##
printenv HOME
 
## 或者用echo ##
echo "$HOME"
 
# 考虑到可移植性,也可以用printf ##
printf "%s\n" "$HOME"

示例输出:

/home/vivek

增加或设定一个新环境变量

下面是bash,zsh,sh和ksh的语法:

## 语法 ##
VAR=value
FOO=bar
 
## 设定vim为默认文本编辑器 ##
EDITOR=vim
export $EDITOR
 
## 考虑安全性,设定默认shell连接超时时间 ##
TMOUT=300
export TMOUT
 
## 你可以直接使用export命令设定命令的搜素路径 ##
export PATH=$PATH:$HOME/bin:/usr/local/bin:/path/to/mycoolapps

然后,使用printenv或者echo或printf命令查看环境变量PATH,EDITOR,和TMOUT的值:

printenv PATH
echo "$EDITOR"
printf "%s\n" $TMOUT

怎么修改一个现有的环境变量?

下面是语法:

export VAR=value
## 或者 ##
VAR=value
export $VAR
 
## 把默认文本编辑器从vim改为emacs ##
echo "$EDITOR" ## <--- 屏幕输出vim
EDITOR=emacs  ## <--- 修改
export $EDITOR ## <--- 让修改在其他会话生效
echo "$EDITOR" ## <--- 屏幕输出emacs 

tcsh shell下增加和修改变量的语法是下面这样的:

## 语法
setenv var value
printenv var
 
## 设置变量foo的值为bar ##
setenv foo bar
echo "$foo"
printenv foo
 
## 设置变量PATH ##
setenv PATH $PATH\:$HOME/bin
echo "$PATH"
 
## 设置变量PAGER ##
setenv PAGER most
printf "%s\n" $PAGER

找出bash shell的配置文件

用下面的命令列出bash shell的文件:

ls -l ~/.bash* ~/.profile /etc/bash* /etc/profile

示例输出:

Fig.05: List all bash environment configuration files

图5:列出bash的所有配置文件

要查看所有的bash配置文件,输入:

less ~/.bash* ~/.profile /etc/bash* /etc/profile

可以使用文字编辑器比如vim或emacs来一个一个编辑bash配置文件:

vim ~/.bashrc

编辑/etc/目录下的文件,输入:

## 首先是备份,以防万一
sudo cp -v /etc/bashrc /etc/bashrc.bak.22_jan_15
 
########################################################################
## 然后,随心所欲随便改吧,好好玩玩shell环境或者提高一下效率:)         ##
########################################################################
sudo vim /etc/bashrc

被Bash shell初始化过程中应用的文件搞糊涂了吗?

下面的"bash初始化文件"流程图应该有些帮助:

根据账户设定的默认shell,你的用户配置或系统配置可能是下面其中一种:

找出zsh shell配置文件

zsh的wiki中建议用下面的命令:

strings =zsh | grep zshrc

示例输出:

/etc/zshrc
.zshrc

输入下面的命令列出你的zsh shell文件:

ls -l /etc/zsh/* /etc/profile ~/.z*

查看所有zsh配置文件:

less /etc/zsh/* /etc/profile ~/.z*

找出ksh shell配置文件

  1. 查看~/.profile或者/etc/profile文件。

找出tcsh shell配置文件

  1. C shell查看~/.login,~/.cshrc文件。
  2. TC shell查看~/.tcshrc和~/.cshrc文件。

我可以写个类似这样每次登录时都自动执行的脚本吗?

是的,把你的命令或别名或其他设定添加到~/.bashrc(bash shell)或者~/.profile(sh/ksh/bash)或者~/.login(csh/tcsh)文件中。

我可以写个类似这样每次登出都自动执行的脚本吗?

是的,把你的命令或别名或其他设定添加到~/.bash_logout(bash)或者~/.logout(csh/tcsh)文件。

history:获取关于shell会话的更多信息

输入history命令来查看本次会话

您可能想查找下面的文章:

  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件
  • Linux shell脚本输出日志笔记整理(必看篇)
  • shell脚本 自动创建用户详解及实例代码
  • Linux Shell中三种引号的用法及区别
  • linux脚本判断条件总结(必看)
  • linux shell发送Email邮件的方法详解
  • Linux shell 之 提取文件名和目录名的一些方法总结
  • shell脚本实现输入密码显示星号
  • linux shell在while中用read从键盘输入的实现
  • shell脚本通过expect实现自动单边无密登录功能

相关文章

  • shell统计pv和uv、独立ip的方法
  • Shell脚本实现自动发送邮件的例子
  • Shell动态生成数组的多种方法
  • Linux shell脚本实现CPU预警
  • 定时导出mysql本地数据替换远程数据库数据脚本分享
  • shell脚本实现批量采集爱站关键词库
  • 查找目录下同名但不同后缀名文件的shell脚本代码
  • 零基础入门篇之Linux及Arm-Linux程序开发笔记
  • hi 感恩节——Linux基础教程之mysql和php
  • centos中mysql备份数据库脚本分享

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • awk基础知识小结第1/2页
    • 实现MySQL定时批量检查表repair和优化表optimize table的shell脚本
    • 通过shell进行数学运算的多种方式
    • shell写的告警次数控制及恢复示例代码
    • Shell脚本实现自动检测修改最快的Ubuntu软件源
    • Shell脚本美化登录界面装饰图(含农历)
    • shell命令行参数用法简介
    • Shell脚本中实现切换用户并执行命令操作
    • Shell脚本if else语句小结
    • linux查看所有用户和查看用户组的方法(修改用户组)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有