linux 的坑 持续更新

196 阅读2分钟

本文会持续记录一些linux的坑,这些坑很多时候就会坑你几个小时!!!

执行.sh脚本

shell脚本中有时会包含export命令 用于修改环境变量的情景 java项目中有时就会通过某些脚本来初始化一些环境变量 例如modify_env.sh脚本包含

export java = /user/bin

sh

正常情况下 linux下执行一个shell脚本 使用

sh modify_env.sh

这种方式运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,返回到执行该脚本之前的shell。

重点来了: 你在.sh脚本中修改的环境变量并不会影响到当前登陆窗口shell的环境变量

source

如果你使用

source modify_env.sh

那么此时当前窗口的shell的环境变量也被成功修改了

很多时候 执行.sh脚本的时候都会跟nohup命令搭配使用

那么陷阱就是如果nohup sh modify_env.sh是没问题的

但是nohup source modify_env.sh就会报错 不信的人可以自己试一下啊 千万要注意这个陷阱

echo 命令

echo就是linux下的打印命令, 可以将变量,常量等输出到控制台. 常见用法:

1. 不加双引号 单引号

无法打印;(分号)

2. 加单引号

无法打印变量

3. 加双引号(推荐使用)

基本都可以打印 特殊符号注意使用转义符号

当你要打印的变量是一个多行文本的时候, 例如该变量是一个mysql查询的返回,包含多条数据.

echo 直接打印多行变量:

结果为一行,没有换行

echo 通过双引号打印多行变量

多行变量显示正确的换行

如果你想通过echo命令,直接将内容存储到文件中,一定要用双引号,不然多行变成一行就完全用不了啦