unix中的bash脚本 – 返回完整path和文件名

我想在unix中devisebash脚本,这个bash返回完整path,因为我想在其他地方使用这个文件。

你正在寻找正在运行的脚本的完整path和文件名?

#!/bin/bash 

_my_name = basename $0

如果[“ echo $0 | cut -c1 ”=“/”]; 然后

  _my_path=`dirname $0` 

其他

  _my_path=`pwd`/`echo $0 | sed -es/$_my_name//` 

科幻

回声“文件名:$ _my_name”

回声“绝对path:$ _my_path”

回声“完整path+名称:$ 0”

如果您的系统上有readlink ,请尝试一下:

 readlink -e filename 

由于这个问题并没有试图回答将具有符号链接的path转换为物理path(而不是任何链接)的难题,而只是获得原始脚本的目录和/或完整path,所以存在更简单的解决scheme(在本例中分解为易读性的组件,另外您可能要单独使用这些组件):

 #!/bin/bash PROG_PATH=${BASH_SOURCE[0]} # this script's name PROG_NAME=${PROG_PATH##*/} # basename of script (strip path) PROG_DIR=$(cd "$(dirname "${PROG_PATH:-$PWD}")" 2>/dev/null 1>&2 && pwd) echo "script directory is: $PROG_DIR" 

你的testing用例应该包含调用这个脚本的绝对path,相对path,“采购”等等,并且总是以包含脚本的目录结束。