Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从任何带有NodeJs的目录运行shell脚本_Javascript_Node.js_File_Terminal_Child Process - Fatal编程技术网

Javascript 如何从任何带有NodeJs的目录运行shell脚本

Javascript 如何从任何带有NodeJs的目录运行shell脚本,javascript,node.js,file,terminal,child-process,Javascript,Node.js,File,Terminal,Child Process,我有一个Nodejs项目,我正在工作,我遇到了一个我似乎无法解决的问题 example.js const{exec}=require('child_进程'); exec(`sh./worker/lib/scripts/hi.sh`, (错误,输出)=>{ 如果(错误){ log(`error:${error.message}`); 返回; } 否则,如果(退出){ log(`stderr:${out}`); 返回; } }); hi.sh echo“hi” 我运行代码,只要我在允许shell

我有一个Nodejs项目,我正在工作,我遇到了一个我似乎无法解决的问题

example.js

const{exec}=require('child_进程');
exec(`sh./worker/lib/scripts/hi.sh`,
(错误,输出)=>{
如果(错误){
log(`error:${error.message}`);
返回;
}
否则,如果(退出){
log(`stderr:${out}`);
返回;
}
});
hi.sh

echo“hi”

我运行代码,只要我在允许shell找到“hi.sh”路径的路径中,一切都可以运行。由于我正在制作一个CLI,为了供其他人使用,我无法简单地将目录更改为正确的目录,以使脚本正常工作。有没有办法让这段代码适用于用户或我可能所在的任何目录?我已经研究了其他一些stackOverflow问题,但我不确定我是否完全理解它是如何工作的。

这是因为命令中的路径与调用它的位置有关。使用
\uuu dirname
获取执行文件所在目录的绝对路径

exec(`sh${\uu dirname}/worker/lib/scripts/hi.sh`)