Shell Basic
- 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相关推荐
- vuepress 代码高亮支持的语言
VuePress 使用了 Prism 来为 markdown 中的代码块实现语法高亮.Prism 支持大量的编程语言,你需要做的只是在代码块的开始倒勾中附加一个有效的语言别名 Markup - mar ...
- 在bandwagon上架设web服务器
内存小不要安装64位系统,装好centos6 x86 bbr. 在root shell -Basic里执行会出现奇怪的问题,所以要使用putty: yum update yum -y install ...
- ROS 相关学习资源汇总
文章目录 Part I:学习资源汇总 0. ROS配置 1. 课程 2. 书籍/教程 3. 相关基础 4. 开源项目 4.1 ROS 无人车 4.2 ROS自动驾驶 Part II:学习笔记 ROS- ...
- 如何入侵目标的网络DIY指南
相关链接:http://www.freebuf.com/news/40689.html _ _ _ ____ _ _ | | | | __ _ ___| | __ | __ ) __ _ ___| | ...
- A DIY Guide for those without the pati
为什么80%的码农都做不了架构师?>>> _ _ _ ____ _ _ | | ...
- 在vue项目中使用prismjs(网页代码高亮插件)
在vue项目中使用prismjs 什么是prismjs prismjs是一款代码高亮美化插件,在一些技术博客类的网站中需要展示代码时,可以使用它类似与markdown的代码块, 官网链接:https: ...
- 【Linux】【Shell】【Basic】字符串操作
1. 字符串切片: ${var:offset:number} 取字符串的子串: 取字符趾的最右侧的几个字符:${ ...
- Linux shell 学习笔记(9)— 循环语句(for、while)以及更改字段分隔符
1. for 语句 bash shell 中 for 命令的基本格式如以下,$var 变量包含着这次迭代对应的当前列表项中的值. for var in list docommands done 也可以 ...
- linux利用* vim提权,linux 通过suid vim.basic文件提权
在kali上复现 先给需要的vim.basic文件设置suid权限 chmod u+s /usr/bin/vim.basic 先adduser test1一个普通权限用户 现在就是一个合适的提权环境 ...
最新文章
- 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题
- 个推通知栏修改_浙大一院五一劳动节放假通知!手机办住院手续!还有这些攻略不能错过!...
- Android之IPC通信中的UID和PID识别
- WildFly 10 CR 2发布– Java EE 7,Java 8,Hibernate 5,JavaScript支持热重载
- python 函数参数注解_python-如何使用函数注释来验证函数调用类...
- 包含图片,复选框的ListView(转)
- BZOJ2038 小Z的袜子 (莫队算法)
- Linux制作ISO镜像文件
- 查看服务器远程桌面端口命令,Windows系统服务器远程桌面端口查看和修改方法...
- 【Keras】LSTM和Bi-LSTM神经网络
- SFP光模块高低温老化测试 高低温试验测试设备
- 批量将多个 Excel 工作簿文件拆分成单个 Excel 工作簿文件
- 三个点在同一个半圆的概率_求解四只鸭子在同一半圆池塘的概率
- 磁盘块管理器DiskBlockManager
- Kotlin:Spring之@Value(“${xxx.xx}“)报错问题
- PADS9.5使用笔记(常用功能和疑难问题)
- 知无不言 容芳志:Objective-C地位下滑是必然
- 机器学习之分类器性能指标之ROC曲线、AUC值
- 电脑端怎样具体操作图片文字识别?
- ISO质量管理体系认证有哪些流程?
热门文章
- 终于有人把 Elasticsearch 原理讲透了
- 足够应付面试的Spring事务源码阅读梳理
- 如何设计一个良好的接口?
- 看看这些被同事喷的 JS 代码风格你写过多少
- JAVA: final 修饰符
- 【Python】青少年蓝桥杯_每日一题_9.11_买鸡
- 二层交换配置完ping失败_设置完端口聚合之后就ping不通了!!!
- mongodb 服务器时区设置_关于MongoDB-Balancer设置时间窗口的问题
- 综合布线管理系统之智能配线架的过去与将来
- echarts仪表盘option_echarts仪表盘完整代码