我有几个类似结构的目录树。
就像是:
〜/
树1 /
SRC /
斌/
Tree2 /
SRC /
箱/
当我在Tree1 / src下面的某个地方时,我想使用Tree1 / bin。当我在Tree2 / src下面的某个地方时,我想使用Tree2 / bin。
有没有办法定义一个shell变量,其值取决于我当前的工作目录?
答案 0 :(得分:3)
PWD是已经通过bash,ksh和其他shell设置到当前目录的变量。
答案 1 :(得分:1)
cwd=$(pwd)
应该做到这一点。它将打印工作目录(pwd)的输出分配给变量。
用〜Tree1 / bin替换~Tree1 / src / dir1 / dir2你可以做到
bindir=$(pwd | sed 's/src.*/bin/')
答案 2 :(得分:1)
正如jlliagre所说,bash(和许多其他现代shell一样)将当前工作目录存储在$ PWD中;如果它是Tree1 / src / some / other /目录,那么只需使用“参数扩展”即可从中提取“Tree1 / bin”:
$ echo $PWD
Tree1/src/some/other/directory
$ echo ${PWD%%src*}bin
Tree1/bin
答案 3 :(得分:0)
通常$PWD
变量(当前工作目录)包含当前目录的路径。如果未定义此变量,则可以使用将返回当前路径的pwd
命令。
答案 4 :(得分:0)
“当前”的另外两个定义包括脚本启动时所在的目录(无论脚本在何处,都是文件开头的start_dir="$PWD"
的值)和目录脚本本身 - script_dir="$(dirname -- "$(readlink -f -- "$0")")"
。