我正在尝试在tcl脚本中运行csh脚本。csh脚本中包含bsub命令。当我尝试运行脚本时,它错误地说bsub: Command not found。
脚本样本:
exec cp -r x ../
cd ../../my_area
exec cp -r y ../../
cd ../../my_scripts
exec /bin/csh/ aim.csh >@stdout 2>@stderr
# also tried set hd aim.csh , exec /bin/csh $hd >@stdout 2>@stderr}aim.csh的详细信息
setenv IDC $d
setenv LGH $f
set error $e
bsub -q normal -db <path> 发布于 2021-04-21 18:44:18
调用脚本的正确方式如下所示:
exec /bin/csh aim.csh >@stdout 2>@stderr在运行之前,您可能希望确保aim.csh文件存在。在任何cd调用之后执行此操作非常重要;这会改变代码查找aim.csh的位置。
如果您遇到bsub不在可执行文件搜索路径上的问题,那么这完全不是Tcl和csh的错。(我不知道它会在哪里,也记不清哪个包提供了它。)如果需要,可以从Tcl代码扩展可执行文件搜索路径:
# Before calling exec; after is too late
append env(PATH) :/path/to/directory例如,如果bsub实际上是/opt/local/somewhere/bin/bsub,那么您应该这样做:
append env(PATH) :/opt/local/somewhere/bin要做到这一点,一种真正合适的方法是使用以下过程:
proc addToPath {directory} {
global env tcl_platform
if {[file type $directory] ne "directory"} {
error "must pass a directory name"
}
append env(PATH) $tcl_platform(pathSeparator) [file nativename $directory]
return
}
addToPath /opt/local/somewhere/bin但是对于不可移植的代码,简单的append已经足够好了。
https://stackoverflow.com/questions/67189897
复制相似问题