1. bash shell 是大多数 Linux 发行版上的默认 shell。如果不是运行在 bash shell 之下,那么可以考虑用以下方式之一对 bash shell 进行实践。
  • 使用
    chsh -s /bin/bash
    命令来改变默认 shell。这一修改将在下一次登录时生效。
  • 使用
    su - $USER -s /bin/bash
    命令创建另一个进程,作为当前 shell 的子进程。新进程将是使用 bash 的登录 shell

2.env 命令如果不带任何选项或参数,就显示当前的环境变量。还可以使用它在定制的环境中执行命令。-i(或只是 -)选项在运行命令之前清理当前环境,而 -u 选项清除您不希望传递的环境变量。

3.命令行可以使用单引号,也可以使用双引号。这两种引号之间有一个重要的差异。shell 将双引号(")之间的 shell 变量展开,但是在使用单引号(')时不进行展开。

4.unset VAR1;echo $VAR1

5.历史

history
显示全部历史
history N
显示历史中最后 N
history -d N
从历史中删除第 N 行;例如,如果这一行包含密码,就可能需要这么做
!!
最近的命令
!N
N 个历史命令
!-N
历史中倒数第 N 个命令(!-1 相当于 !!)
!#
正在输入的当前命令
!string
string 开头的最近的命令
!?string?

包含 string 的最近的命令

6.setenv和export都可以将变量导出给子shell.但语法有所不同。

setenv VAR1 var1

export VAR1

注:它们在变量名前都不加$

7.使用命令 set -u 可以针对引用未定义的变量的情况生成一个错误,使用 set +u 可以禁用这种警告.

注意取消一个不存在的变量并不会产生错误,即使在指定 set -u 时也是如此。

8.可以使用 unset 命令从 Bash shell 中清除变量。可以使用 -v 选项来确保删除变量定义。函数可以使用与变量相同的名字,因此如果希望清除函数定义,就请使用 -f 选项。在没有使用 -f-v 的情况下,如果存在这样一个变量,那么 bash 的 unset 命令就会清除变量定义;否则,如果存在这样一个函数,这个命令就清除函数定义 .

9.在登录 Linux 系统时,您的 id 就有了一个默认 shell,它就是您的登录 shell。如果这个 shell 是 bash,那么它就会在您控制系统之前先执行几个配置脚本。如果存在 /etc/profile 文件,就首先执行这个文件。根据发行版的不同,/etc 中的其他脚本也可能会执行,例如 /etc/bash.bashrc 或 /etc/bashrc。这些脚本运行之后,如果主目录中存在脚本,该脚本也会被执行。Bash 会按照 ~/.bash_profile、~/.bash_login 和 ~/.profile 的顺序来查找文件。最先找到的文件会首先执行。

当您登出系统时,如果主目录中存在 ~/.bash_logout 脚本,bash 就会执行它。

一旦登录进系统并使用 bash,您还可以启动另外一个 shell(称为交互式 shell)来运行命令,例如在后台运行命令。在这种情况中,bash 只会执行 ~/.bashrc 脚本(假设这个脚本存在,如果存在,则是通过使用~/.bash_profile去检查调用的)。通常可以使用如清单所示的命令在 ~/.bash_profile 检查这个脚本,以便可以在登录时或在启动交互式 shell 时执行它。

检查 ~/.bashrc

# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

可以使用 --login 选项强制 bash 像登录 shell 一样读取配置文件(通常在除root用户外的其他用户的主目录下,是没有~/.bashrc脚本的,它会使用/etc/bashrc脚本)。如果不希望执行登录 shell 的配置文件,可以指定 --noprofile 选项。类似地,如果希望对某个交互式 shell 不执行 ~/.bashrc 文件,可以使用 --norc 选项来启动 bash。也可以通过指定 --rcfile 选项加上希望使用的文件名来强制 bash 使用 ~/.bashrc 之外的文件。

以其他方式启动 bash

除了前面介绍的这种在终端中运行 bash 的标准方法之外,bash 也可以通过其他方法加以使用。

除非您引用(source) 脚本在当前 shell 中运行,否则它就会在自己的非交互式 shell 中运行,上面的配置文件都不会被读取。然而,如果设置了 BASH_ENV 变量,那么 bash 就会对这个值进行扩展,并假设它是一个文件名。如果这个文件存在,那么 bash 就会在非交互式 shell 中执行任何脚本或命令之前先执行这个文件。

使用 BASH_ENV

ian@attic4:~$ cat testenv.sh#!/bin/bashecho "Testing the environment"ian@attic4:~$ cat somescript.sh#!/bin/bashecho "Doing nothing"ian@attic4:~$ export BASH_ENV="~/testenv.sh"ian@attic4:~$ ./somescript.shTesting the environmentDoing nothing

非交互式 shell 也可以使用 --login 选项启动,从而强制配置文件的执行。

转载于:https://www.cnblogs.com/xiaoyixy/archive/2008/08/18/1270236.html

Shell Basic相关推荐

  1. vuepress 代码高亮支持的语言

    VuePress 使用了 Prism 来为 markdown 中的代码块实现语法高亮.Prism 支持大量的编程语言,你需要做的只是在代码块的开始倒勾中附加一个有效的语言别名 Markup - mar ...

  2. 在bandwagon上架设web服务器

    内存小不要安装64位系统,装好centos6 x86 bbr. 在root shell -Basic里执行会出现奇怪的问题,所以要使用putty: yum update yum -y install ...

  3. ROS 相关学习资源汇总

    文章目录 Part I:学习资源汇总 0. ROS配置 1. 课程 2. 书籍/教程 3. 相关基础 4. 开源项目 4.1 ROS 无人车 4.2 ROS自动驾驶 Part II:学习笔记 ROS- ...

  4. 如何入侵目标的网络DIY指南

    相关链接:http://www.freebuf.com/news/40689.html _ _ _ ____ _ _ | | | | __ _ ___| | __ | __ ) __ _ ___| | ...

  5. A DIY Guide for those without the pati

    为什么80%的码农都做不了架构师?>>>    _   _            _      ____             _    _                 | | ...

  6. 在vue项目中使用prismjs(网页代码高亮插件)

    在vue项目中使用prismjs 什么是prismjs prismjs是一款代码高亮美化插件,在一些技术博客类的网站中需要展示代码时,可以使用它类似与markdown的代码块, 官网链接:https: ...

  7. 【Linux】【Shell】【Basic】字符串操作

    1. 字符串切片:             ${var:offset:number}                 取字符串的子串:                 取字符趾的最右侧的几个字符:${ ...

  8. Linux shell 学习笔记(9)— 循环语句(for、while)以及更改字段分隔符

    1. for 语句 bash shell 中 for 命令的基本格式如以下,$var 变量包含着这次迭代对应的当前列表项中的值. for var in list docommands done 也可以 ...

  9. linux利用* vim提权,linux 通过suid vim.basic文件提权

    在kali上复现 先给需要的vim.basic文件设置suid权限 chmod u+s /usr/bin/vim.basic 先adduser test1一个普通权限用户 现在就是一个合适的提权环境 ...

最新文章

  1. 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题
  2. 个推通知栏修改_浙大一院五一劳动节放假通知!手机办住院手续!还有这些攻略不能错过!...
  3. Android之IPC通信中的UID和PID识别
  4. WildFly 10 CR 2发布– Java EE 7,Java 8,Hibernate 5,JavaScript支持热重载
  5. python 函数参数注解_python-如何使用函数注释来验证函数调用类...
  6. 包含图片,复选框的ListView(转)
  7. BZOJ2038 小Z的袜子 (莫队算法)
  8. Linux制作ISO镜像文件
  9. 查看服务器远程桌面端口命令,Windows系统服务器远程桌面端口查看和修改方法...
  10. 【Keras】LSTM和Bi-LSTM神经网络
  11. SFP光模块高低温老化测试 高低温试验测试设备
  12. 批量将多个 Excel 工作簿文件拆分成单个 Excel 工作簿文件
  13. 三个点在同一个半圆的概率_求解四只鸭子在同一半圆池塘的概率
  14. 磁盘块管理器DiskBlockManager
  15. Kotlin:Spring之@Value(“${xxx.xx}“)报错问题
  16. PADS9.5使用笔记(常用功能和疑难问题)
  17. 知无不言 容芳志:Objective-C地位下滑是必然
  18. 机器学习之分类器性能指标之ROC曲线、AUC值
  19. 电脑端怎样具体操作图片文字识别?
  20. ISO质量管理体系认证有哪些流程?

热门文章

  1. 终于有人把 Elasticsearch 原理讲透了
  2. 足够应付面试的Spring事务源码阅读梳理
  3. 如何设计一个良好的接口?
  4. 看看这些被同事喷的 JS 代码风格你写过多少
  5. JAVA: final 修饰符
  6. 【Python】青少年蓝桥杯_每日一题_9.11_买鸡
  7. 二层交换配置完ping失败_设置完端口聚合之后就ping不通了!!!
  8. mongodb 服务器时区设置_关于MongoDB-Balancer设置时间窗口的问题
  9. 综合布线管理系统之智能配线架的过去与将来
  10. echarts仪表盘option_echarts仪表盘完整代码