首页 > 系统相关 >Linux环境变量,打开的 shell 选项 himBHs 和 hBc

Linux环境变量,打开的 shell 选项 himBHs 和 hBc

时间:2024-04-09 12:35:11浏览次数:34  
标签:shell hash ## hBc echo set himBHs date bash

前言全局说明

Linux环境变量 himBHs 和 hBc


一、说明

$- 记录的是当前配置打开的 shell 选项,而 himBH 是其默认值。


二、查看环境变量

2.1 本地执行

echo $-

image


2.1 查看远程环境变量

ssh [email protected] 'echo $-'

image

127.0.0.1实际是本机回环,但是假设是远程机器的IP,效果是一样的


三、选项说明

h - hashall
i - interactive-comments
m - monitor
B - braceexpand
H - history
s - 暂未知
c - 暂未知

查看来确认打开状态

set -o | grep -w on

3.1、h - hashall

bash 的 hash 功能,可以实现让某些 command 和 具体路径 绑定在一起。

## 绑定 date 到 /tmp/fakedate 路径
$ hash -p /tmp/fakedate date

## 列出包含 fakedate 绑定关系
$ hash -l | grep  fakedate
builtin hash -p /tmp/fakedate date

## 执行绑定后的 date
$ date
-bash: /tmp/fakedate: No such file or directory

## 取消绑定,date 就是默认的输出日期了
$ set +h
$ date
Sun Jan 19 15:43:18 CST 2020

## 绑定 路径和date
$ set -h
$ date
-bash: /tmp/fakedate: No such file or directory

## 
$ hash -d date
$ date
Sun Jan 19 15:43:53 CST 2020

$ 开头的是用户输入的命令

hash表概述

在 Linux 系统第一次执行外部命令时,hash 缓存表是空的;
这时,系统会先从 PATH 路径下寻找命令,找到后会将路径加入到 Hash 缓存中;

当再次执行此命令时,会直接从 hash 表的路径下执行;
如果存在则直接执行,如果不存在将继续从 PATH 下的路径查找;

因此,hash 表可以提高命令的调用速率。

完整说明:https://blog.csdn.net/weixin_42599558/article/details/116871719


3.2、i - interactive-comments

配置在交互 shell 模式下,是否允许注释。
设置值不能用 set -i ,会报错

## 取消设置,不允许注释
$ set +o interactive-comments
$ echo $-
hmBH
## 显示一个注释语句,被当成命令
$ #testcomment
-bash: #testcomment: command not found

## 设置,允许注释
$ set -o interactive-comments
$ echo $-
himBH
$ set -o | grep -w on | grep interactive-comments
interactive-comments	on
## 显示一个注释语句,不被执行,什么也不显示
$ #testcomment


3.3、m - monitor

配置是否打开控制 Job control 功能。

Job control 是什么? 即可以控制进程的停止、继续,后台或者前台执行等。

开启 job control 后,如果执行了一个比较耗时的命令,可以按下 CTRL+Z 让它在后台运行:

$ sleep 50
^Z
[1]+  Stopped                 sleep 50

然后, 可以用 fg 命令将后台运行的任务恢复到前台执行:

$  fg
sleep 50
^C

如果关闭这个选项,就会失去控制 Job 的能力:

$ set  +m
$ echo $-
hiBH

$ sleep 50
^Z
^Z
^C

$ fg
-bash: fg: no job control

3.4、B - braceexpand

关于括号使用的flag,打开后可以快捷地实现某些效果

快捷输出多个字符串:

$ echo testbraceexpand{1..10}
testbraceexpand1 testbraceexpand2 testbraceexpand3 testbraceexpand4 testbraceexpand5 testbraceexpand6 testbraceexpand7 testbraceexpand8 testbraceexpand9 testbraceexpand10

$ set +B
$ echo $-
himH

$ echo testbraceexpand{1..10}
testbraceexpand{1..10}

快捷备份:

$ echo $-
himH
$ cp  /tmp/myfile{,.bak}
cp: missing destination file operand after '/tmp/myfile{,.bak}'
Try 'cp --help' for more information.

$ set -B
$ echo $-
himBH
$ cp  /tmp/myfile{,.bak}
$ ls -l  /tmp/myfile*
-rw-r--r-- 1 xxx users 3 Jan 19 16:43 myfile
-rw-r--r-- 1 xxx users 3 Jan 19 16:43 myfile.bak

3.5、H - history

是否允許用 “感叹号 !+ history number ” 来执行历史命令

!! : 返回并执行最近的一个历史命令
!n : 返回并执行第 n 个历史命令

$ echo $-
himBH

$ uptime
 16:51:00 up 1137 days, 23:01,  1 user,  load average: 0.29, 0.38, 0.31
$ !!
uptime
 16:51:05 up 1137 days, 23:02,  1 user,  load average: 0.35, 0.39, 0.31

$ history | grep 59
   59  01/19/20 16:47 echo $-

$ !59
echo $-
himBH

如果关掉 histexpand ,那么 !n 则无法顺利执行了。

$ set +H
$  echo $-
himB
$ !59
-bash: !59: command not found
$ !!
-bash: !!: command not found

由于 histexpand 打开的时候,“ !” 带特殊含义;
因此 histexpand 打开状态下,“ !” 不能出现在双引号中,
否则会报错 -bash: !": event not found ,具体可戳 《 Linux -bash: !": event not found 》 了解。


3.6、s - 暂未知


3.7、c - 暂未知



四、其他知识

4.1 set 命令

查看: set -o
设置: set -N 或者 set -o Nx
取消: set +N

4.2 -/+ 作用

-:设置值
+:取消设置值



免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
https://blog.csdn.net/weixin_44648216/article/details/104062992
https://blog.csdn.net/weixin_44648216/article/details/104059516



标签:shell,hash,##,hBc,echo,set,himBHs,date,bash
From: https://www.cnblogs.com/wutou/p/18123650

相关文章

  • Linux shell命令行查看判断文件是内部内建自带命令还是外部命令
    前言全局说明Linuxshell命令行查看判断文件是内部内建自带命令还是外部命令一、说明内部命令是shell自带的外部命令是安装系统时默认安装的,并且在文件系统下有对应的路径二、内部命令typecd三、外部命令typecat免责声明:本号所涉及内容仅供安全研究与教学......
  • xshell安装和连接 bash shell 介绍和使用
     xshell安装和连接           在官网上注册一下可以选择学习来用的,是免费的但是差一些只有4个teble页 链接centos,将centos开启 在xshell中 找不到可以在文件夹里          #重启网卡systemctlrestartnetw......
  • 【Linux】手搓shell
    手搓shell代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<unistd.h>#include<sys/types.h>#include<sys/wait.h>#defineZERO'\0'#defineSIZE512#defineSEP......
  • tomcat弱口令后台getshell漏洞复现
    漏洞描述tomcat是一个用于快速部署jsp网站的中间件tomcat默认的管理页面manager使用basic认证用户名密码登录,可以使用burp进行爆破,并且一般安装后如果不修改/conf/tomcat-users.xml文件中的默认用户名密码tomcat:tomcat,可以登录管理后台,在部署war包后tomcat默认会将war包中的......
  • 【Linux】shell 脚本基础使用
    在终端中输入命令可以完成一些常用的操作,但是我们都是一条一条输入命令,比较麻烦,为了解决这个问题,就会涉及到shell脚本,它可以将很多条命令放到一个文件里面,然后直接运行这个文件即可。shell脚本类似Windows的批处理文件shell脚本就是将连续执行的命令写成一个文件。......
  • Mysql数据库getshell方法
    今天摸鱼时候,突然有人问我不同的数据库getshell的方式,一时间我想到了mysql还有redis未授权访问到getshell的方式,但是仅仅第一时间只想到了这两种,我有查了查资料,找到了上面两种数据库getshell的补充,以及其他数据库getshell的方式。因此更新一个专栏,各个数据库getshell的方式。......
  • 9 个实用 Shell 脚本,建议收藏!
    9个实用Shell脚本,建议收藏!DevOps技术栈 2022-10-1812:36 河南DevOps技术栈专注于分享DevOps工具栈及经验总结,如Linux、Docker、K8s、Jenkins、云原生等。72篇原创内容公众号 Dos攻击防范(自动屏蔽攻击IP)#!/bin/bashDATE=$(date +%d/%b/%Y:......
  • shell脚本案例
    shell脚本案例1.服务器系统配置初始化背景:新购买10台服务器并已安装linux操作需求:1.设置时区并同步时间2.禁用selinux3.清空防火墙默认策略4.历史命令显示操作时间5.禁止root远程登录6.禁止定时任务发送邮件7.设置最大打开文件数8.减少swap使用9.系统内核参数优化10.......
  • 红队攻防之PowerShell基础免杀(二)
    Getbusylivingorgetbusydying什么是图片免杀?答:一般情况下,某些AV对图像未执行检测处理。这种情况下,它们可以仅使用有效负载数据来生成新图像,或将有效负载嵌入到现有图像的最低有效字节中,使其看起来像实际图像。这些图像以PNG格式保存,可进行无损压缩,不影响执行有效......
  • Linux的安装及Xshell连接
    1.Linux的组成鸡蛋1️⃣蛋壳:各种命令,服务,软件.2️⃣蛋清:命令解释器(解释运行Linux命令)3️⃣蛋黄:Linux内核(控制硬件),无法直接操做内核1️⃣各种应用程序:Linux各种命令,服务....2️⃣命令解释器:shell,斯托曼GNU项目中叫bash3️⃣Linux内核:托沃兹开发#Linux也可以叫做GNU/Linux、......