首页 > 系统 > Linux > 正文

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

2019-10-26 18:45:42
字体:
来源:转载
供稿:网友

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

找出你当前的shell

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

ps $$ps -p $$

或者

echo "$0"

输出范例:

图1: Finding out your shell name

图1:找出当前的shell

找出所有已安装的shell

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

type -a zshtype -a kshtype -a shtype -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

查看当前的环境变量

你需要用到:

envenv | moreenv | lessenv | grep 'NAME'

示例输出:

TERM_PROGRAM=Apple_TerminalSHELL=/bin/bashTERM=xterm-256colorTMPDIR=/var/folders/6x/45252d6j1lqbtyy_xt62h40c0000gn/T/Apple_PubSub_Socket_Render=/tmp/launch-djaOJg/RenderTERM_PROGRAM_VERSION=326TERM_SESSION_ID=16F470E3-501C-498E-B315-D70E538DA825USER=vivekSSH_AUTH_SOCK=/tmp/launch-uQGJ2h/Listeners__CF_USER_TEXT_ENCODING=0x1F5:0:0PATH=/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=1PWD=/Users/vivekSHLVL=2HOME=/Users/vivekLOGNAME=vivekLC_CTYPE=UTF-8DISPLAY=/tmp/launch-6hNAhh/org.macosforge.xquartz:0_=/usr/bin/envOLDPWD=/Users/vivek            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表