我正在制作一些自定义命令在我的debian服务器上使用,我将它们放在/ usr / bin文件夹中。
我想做的一个自定义命令涉及从我调用脚本的位置获取目录,而不是脚本所在的目录。
我在这里找到的几乎所有问题都涉及使用
获取工作目录a=$PWD
或
a=$(pwd)
这只返回脚本所在的目录。
编辑:我知道
$OLDPWD
以上只会在某些时候有用。
有可能做我想做的事吗?
我的剧本的当前形式:
#!/bin/bash
if [ -z "$1" ]
then
a=$(pwd)
echo "Unlocking current directory."
sudo chmod 777 -R $a
else
echo "Unlocking directory at \"$1\""
sudo chmod 777 -R $1
fi
答案 0 :(得分:1)
我想做的一个自定义命令涉及从中获取目录 在哪里我调用脚本,
试试这个
#!/bin/bash
pwd
与您提到的内容相反pwd
应该为您提供脚本调用的位置
示例运行
user@host:~/Documents/so$ ./myscript.sh
/home/me/Documents/so
user@host:~/Documents/so$ cd ..
user@host:~/Documents$ ./so/myscript.sh
/home/me/Documents
相反,如果您希望从脚本中知道脚本的存在位置 - 无论从哪里调用 - 请执行
#!/bin/bash
readlink -m "$(which $0)" #method1
readlink -m "${BASH_SOURCE}" #method2 , preferred for reasons mentioned by @CharlesDuffy's comments