使用相对路径从另一个脚本调用一个shell脚本

时间:2013-11-04 07:23:44

标签: csh

我有一个这样的脚本:

#!/bin/csh
echo "This is the main programme"
./printsth

我想使用相对路径从此脚本中调用脚本printsth。有办法吗?通过相对路径,我的意思是相对于我的调用脚本所在的路径。

2 个答案:

答案 0 :(得分:4)

您可以使用$cwd来引用当前工作目录。因此,如果您想使用相对于当前工作目录的路径调用printsth,请使用$cwd开始行。

例如,如果要调用当前目录中的printsth,请说:

$cwd/printsth

如果您想调用上面的printsth个目录:

$cwd/../printsth

确保它是csh脚本(即第一行是#!/bin/csh)。如果是shbash脚本,则需要使用$PWD(对于“当前工作目录”),而不是$cwd

编辑:

如果你想要一个相对于脚本目录而不是当前工作目录的目录,那么你可以这样做:

setenv SCRIPTDIR `dirname $0`
$SCRIPTDIR/printsth

这会将$SCRIPTDIR设置为与原始脚本相同的目录。然后,您可以构建相对于该路径的路径。

答案 1 :(得分:1)

./printsth运行脚本不会一直有效,因为相对路径将取决于运行主脚本的目录。

一种解决方案是确保我们进入脚本所在的目录,然后运行它:

cd -P -- "$(dirname -- "$0")"
./printsth

有关更多示例,请参阅:How to set current working directory to the directory of the script?

另请参阅:How to convert absolute path into relative path?