我有一个这样的脚本:
#!/bin/csh
echo "This is the main programme"
./printsth
我想printsth
使用相对路径从该脚本中调用该脚本。有没有办法这样做?相对路径是指相对于我的调用脚本所在位置的路径。
我有一个这样的脚本:
#!/bin/csh
echo "This is the main programme"
./printsth
我想printsth
使用相对路径从该脚本中调用该脚本。有没有办法这样做?相对路径是指相对于我的调用脚本所在位置的路径。
您可以使用$cwd
. 因此,如果您想printsth
使用相对于当前工作目录的路径进行调用,请以$cwd
.
例如,如果您想printsth
在当前目录中调用 ,请说:
$cwd/printsth
如果要调用printsth
上面的一个目录:
$cwd/../printsth
确保它是一个csh
脚本(即第一行是#!/bin/csh
)。如果是sh
orbash
脚本,则需要使用$PWD
(for 'present working directory'),而不是$cwd
.
编辑:
如果你想要一个相对于脚本目录的目录,而不是当前工作目录,那么你可以这样做:
setenv SCRIPTDIR `dirname $0`
$SCRIPTDIR/printsth
这将设置$SCRIPTDIR
为与原始脚本相同的目录。然后,您可以构建与之相关的路径。
运行脚本./printsth
并不总是有效,因为相对路径将取决于运行主脚本的目录。
一种解决方案是确保我们进入脚本所在的目录,然后运行它:
cd -P -- "$(dirname -- "$0")"
./printsth
有关更多示例,请参阅:如何将当前工作目录设置为脚本目录?
另请参阅:如何将绝对路径转换为相对路径?