Unix shell脚本找出脚本文件所在的目录?

基本上我需要使用与脚本文件位置相关的路径运行脚本,如何将当前目录更改为脚本文件所在的同一目录?


在Bash中,你应该得到你需要的这样的东西:

#!/usr/bin/env bash

BASEDIR=$(dirname "$0")
echo "$BASEDIR"

原始帖子包含解决方案(忽略响应,他们不添加任何有用的东西)。 有趣的工作是由提到的带选项-f unix命令readlink完成的。 当脚本被绝对以及相对路径调用时起作用。

对于bash,sh,ksh:

#!/bin/bash 
# Absolute path to this script, e.g. /home/user/bin/foo.sh
SCRIPT=$(readlink -f "$0")
# Absolute path this script is in, thus /home/user/bin
SCRIPTPATH=$(dirname "$SCRIPT")
echo $SCRIPTPATH

对于tcsh,csh:

#!/bin/tcsh
# Absolute path to this script, e.g. /home/user/bin/foo.csh
set SCRIPT=`readlink -f "$0"`
# Absolute path this script is in, thus /home/user/bin
set SCRIPTPATH=`dirname "$SCRIPT"`
echo $SCRIPTPATH

另请参阅:https://stackoverflow.com/a/246128/59087


假设你正在使用bash

#!/bin/bash

current_dir=$(pwd)
script_dir=$(dirname $0)

echo $current_dir
echo $script_dir

该脚本应该打印您所在的目录,然后打印脚本所在的目录。例如,使用/home/mez/的脚本从/调用它时,它会输出

/
/home/mez

请记住,从命令输出中分配变量时,请将命令封装在$() - 否则您将无法获得所需的输出。

链接地址: http://www.djcxy.com/p/36185.html

上一篇: Unix shell script find out which directory the script file resides?

下一篇: FetchedResultsController and data for custom header section