Linux shell中获取当前目录
当前目录
每当你在终端进行操作时,你都会有一个当前工作目录。
使用pwd来判定当前目录在文件系统内的确切位置。
[root@localhost ~]# pwd
/root
在shell中也可以使用pwd来获取当前目录,并赋值给变量。
test.sh
#!/bin/bash
CRTDIR=$(pwd)
echo $CRTDIR
添加执行权限
chmod +x test.sh
运行test.sh
工作目录
获取当前执行的脚本文件的父目录。
#!/bin/bash
workdir=$(cd $(dirname $0); pwd)
echo $workdir
复杂点的工作目录获取
#!/bin/bash
PRG="$0"
while [ -h "$PRG" ] ; dols=`ls -ld "$PRG"`link=`expr "$ls" : '.*-> \(.*\)$'`if expr "$link" : '/.*' > /dev/null; thenPRG="$link"elsePRG=`dirname "$PRG"`/"$link"fi
done
PRGDIR=$(cd $(dirname $PRG); pwd)
echo $PRGDIR
shell脚本常用语法——获得当前目录
1.获取shell脚本所在的绝对路径
CURRENT_DIR=$(cd $(dirname $0); pwd)
或者
CURRENT_DIR=$(cd `dirname $0`; pwd)
执行步骤解析:
dirname $0
: 取得当前执行的脚本文件所在的目录;cd:
进入当前工作目录;pwd
: 显示当前工作目录;
将当前工作目录输出给变量CURRENT_DIR
。
2.获取shell脚本所在目录的父级目录的绝对路径
由于能1 获得shell脚本所在的绝对路径,那么同理,就可以获得脚本所在目录的父级目录的绝对路径。
PARENT_DIR=$(cd $(dirname $0);cd ..; pwd)
只是在pwd
命令之前添加了cd ..
到父级目录。
注意:
$()
与 `` 作用一样,用于shell命令的执行。dirname
: 显示最后一个结点前的路径;相对的,basename: 显示最后一个结点的名称。$0
: 脚本的路径名称,包含脚本本身的名称。