| 关键词: localhost fedora 目录 脚本 本名 sh oop 文件 complete 进程 |
shell 脚本执行有三种方法 bash 脚本名 sh 脚本名 chmod +x 脚本名 使用下面语句测试 #a.sh(扩展名可不要) cd / pwd echo "complete" 然而具体执行时候,发现过程中改变过路径,然而最终结果是并没有改变路径 [fedora@localhost ~]$ bash a.sh / complete [fedora@localhost ~]$ 原因分析: 执行脚本时候,只是在当前的shell下开了一个子进程,切换目录的操作只对该进程中相关后续指令有效,但改变不了父进程的目录。 解决方法: 法一: 用 source a.sh就行了。 法二: [fedora@localhost ~]$ cd ~ [fedora@localhost ~]$ chmod u+x a.sh [fedora@localhost ~]$ . ./a.sh / complete [fedora@localhost /]$ 对于 $ . ./a.sh 第一个点是bash的内部命令,表示在当前shell中运行 后面的“。/a.sh”是命令的参数,即要执行的脚本 注:两点之间要有空格 一个小脚本:oop 目录或者文件,若为目录,则进入该目录,若为文件,则编辑改文件: 1. oop.sh的代码#/bin/sh # open a file or directory $1 >& /dev/null if [ -d $1 ];then cd $1; else vim $1; fi 2. 别名oop为source /tmp/oop.sh: alias oop='source /tmp/oop.sh' 以后执行oop 命令后,文件夹、文件随心所欲 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|