Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Linux 从ssh连接运行文件不会';我不能正常工作。仅使用直接连接才能正确执行文件_Linux_Node.js_Shell_Ubuntu_Ssh - Fatal编程技术网

Linux 从ssh连接运行文件不会';我不能正常工作。仅使用直接连接才能正确执行文件

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

我知道,这个话题令人困惑。我真的说不出我的问题是什么。 简单地说,我将解释发生了什么-我有一个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,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
从贝壳里