Retrieve parent directory of script

匿名 (未验证) 提交于 2019-12-03 08:48:34

问题:

I'm working on an uninstaller script to delete the parent folder where the script is installed.

/usr/local/Myapplication/Uninstaller/uninstall.sh 

So uninstall.sh has to do this:

rm- rf /usr/local/Myapplication 

I can retrieve the folder where uninstall resides

SYMLINKS=$(readlink -f "$0") UNINSTALL_PATH=$(dirname "$SYMLINKS") 

But I'm still unsure of the pretty way to get the parent path. I thought of using sed to demove the "Uninstaller" part of this path, but is there an elegant way to get the path to Myapplication folder to delete it?

Thank you

回答1:

How about using dirname twice?

APP_ROOT="$(dirname "$(dirname "$(readlink -fm "$0")")")" 

The quoting desaster is only necessary to guard against whitespace in paths. Otherwise it would be more pleasing to the eye:

APP_ROOT=$(dirname $(dirname $(readlink -fm $0))) 


回答2:

Just get the parent of the parent directory:

my_app_path=$(dirname $(dirname $(readlink -f "$0"))) 


回答3:

the ultimate simple way of getting the parent directory path:

PARENT_DIRECTORY="${PWD%/*}"  


回答4:

If you need an absolute path, then you need cd. Otherwise you can just use $(dirname $0)/..

cd $(dirname $0)/.. path=$(pwd) cd - # go back 


回答5:

Full path to parent dir of script, i.e. "/usr/local/bin/bla": export PARENT_OF_THIS_SCRIPT=$( cd $(dirname $0) ; pwd -P )

Just the most recent parent of script, i.e. "bla": export PARENT_DIR_OF_SCRIPT=$( cd $(dirname $0) ; pwd -P | xargs basename )



回答6:

Why don't you simply add ../ at the end of the path?



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!