Javascript 如何从任何带有NodeJs的目录运行shell脚本
我有一个Nodejs项目,我正在工作,我遇到了一个我似乎无法解决的问题 example.jsJavascript 如何从任何带有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
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`)