这个博客使用了天翼云的云服务器,安装的服务端软件是nginx,nginx默认的目录深度挺深,进出颇为不便。虽然用键盘劈里啪啦输入一长串命令来操作服务器看起来也蛮酷的,日子久了终归有点不太方便。所以就想着尝试用批处理命令进入一个指定的文件,以节省一点打字的时间。
批处理文本
#!/bin/sh
cd /usr/share/nginx/html/biib/test/themes/twentyten
批处理的命令构成非常简单,笔者的需求也同样不复杂,只是寻求进入一个深度较深的目录,利用vim新建1个名为1.sh的文件,然后输入如上内容,确认保存。sh表示这个文件是shell文件,linux的文件后缀没有严格的要求,我们可以保存为1.shell,2.sh,甚至直接设置文件名为1。
批处理命令执行方式
sh 1.sh
直接输入sh+空格+文件名的方式就可以运行批处理文件,以这种方式运行批处理文件甚至不需要文件具备执行权限;
./1.sh
上面这种方式会引发权限错误,如果想要以这种方式执行1.sh,需要首先给文件赋予执行权,授权的命令如下,赋予权限之后,1.sh文件就可以愉快的执行了:
chmod +x 1.sh
顺便说下降权的命令,二者仅仅相差1个符号:
chmod -x 1.sh
笔者的初衷只是想进入某个目录,通过以上步骤,文件虽然得以正常运行没有报错,但是目录并没有被改变。
环境变量的影响
直接通过./1.sh执行这段脚本是无法进入twentyten目录的,这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令,而子shell中从父shell中继承了环境变量,但是执行后不会改变父shell的环境变量,想想也挺正常,某些时候我们利用批处理执行一个十条街之外的文件,但并不想跑到十条街以外去,如果想要代码中切换目录的操作生效,需要通过source命令执行:
source ./1.sh
source命令是要求系统在当前的shell环境下执行脚本,不会创建子shell,每次都要输入source是一件烦琐的事情,其实source命令又叫点命令,在需要用到source的情况下,直接换成'.'即可:
. ./1.sh
需要注意的是,这两点之间需要有一个空格。