Linux 从ssh连接运行文件不会';我不能正常工作。仅使用直接连接才能正确执行文件
我知道,这个话题令人困惑。我真的说不出我的问题是什么。 简单地说,我将解释发生了什么-我有一个AWS(amazon web service),其中我有node.js,脚本如下所示:Linux 从ssh连接运行文件不会';我不能正常工作。仅使用直接连接才能正确执行文件,linux,node.js,shell,ubuntu,ssh,Linux,Node.js,Shell,Ubuntu,Ssh,我知道,这个话题令人困惑。我真的说不出我的问题是什么。 简单地说,我将解释发生了什么-我有一个AWS(amazon web service),其中我有node.js,脚本如下所示: #!/usr/bin/env node var fs = require('fs'); var outfile = "slogan.txt"; var text = "A startup is a business built to grow rapidly.\n"; fs.writeFileSync(outfile
#!/usr/bin/env node
var fs = require('fs');
var outfile = "slogan.txt";
var text = "A startup is a business built to grow rapidly.\n";
fs.writeFileSync(outfile,text);
console.log("Script: " + __filename + "\nWrote: " + text + "To: " + outfile);
很简单,对吧?酷!
我想从我的计算机上执行它,所以我就是这样做的
ssh host1 node week2/part1.js
其中,host1 100%正常工作,并与MAC和AWS之间的.pem连接。
已执行脚本:
Bitmakers-iMac:~ Bitmaker$ ssh host1 node week2/part1.js
Script: /home/ubuntu/week2/part1.js
Wrote: A startup is a business built to grow rapidly.
To: slogan.txt
但是。。。没有标语.txt!我必须在服务器内部取得通知
ssh host1
然后从服务器上运行它。谁能解释一下为什么它是这样工作的?
我知道它可能仍然令人困惑,但我希望这个截图将有助于理解这一点。感谢您阅读这篇长文章!我希望你知道答案。
当您使用ssh连接到服务器时,shell所做的第一件事就是读取所有环境文件(.profile、.bashrc、.kshrc等)。但是,在执行远程命令时,不会发生这种情况。在执行之前尝试寻找所需的环境文件,例如:
ssh host ". ./.profile; node week2/part1.js"
可能还需要使用
。/。个人资料;./。巴什尔委员会代码>或。/。个人资料;./。kshrc代码>,这取决于您使用的shell以及这些文件是否也具有env(主要是路径)设置。当您使用ssh连接到服务器时,shell所做的第一件事就是读取所有环境文件(.profile、.bashrc、.kshrc等)。但是,在执行远程命令时,不会发生这种情况。在执行之前尝试寻找所需的环境文件,例如:
ssh host ". ./.profile; node week2/part1.js"
可能还需要使用。/。个人资料;./。巴什尔委员会代码>或。/。个人资料;./。kshrc代码>,这取决于您使用的shell以及这些文件是否也具有env(主要是路径)设置。通过ssh执行命令的方式与在shell中执行命令的方式存在基本差异
在shell中,您说cd week2
,然后发出node part1.js
,而在另一种情况下,您说ssh host1 node week2/part1.js
。文件lamposon.txt
位于包含part1.js
的目录中,当您说node week2/part1.js
时无法找到该文件
更改以下行
var outfile = "slogan.txt";
改为指定标语.txt
的完整路径
如果你尝试,你将能够重现这个问题
cd ~ && node week2/part1.js
在shell中。通过ssh执行命令的方式与在shell中执行命令的方式有基本区别
在shell中,您说cd week2
,然后发出node part1.js
,而在另一种情况下,您说ssh host1 node week2/part1.js
。文件lamposon.txt
位于包含part1.js
的目录中,当您说node week2/part1.js
时无法找到该文件
更改以下行
var outfile = "slogan.txt";
改为指定标语.txt
的完整路径
如果你尝试,你将能够重现这个问题
cd ~ && node week2/part1.js
从贝壳里