Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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 shell中,所有在shell脚本中工作的命令是否也在命令提示符下工作?_Linux_Shell - Fatal编程技术网

在Linux shell中,所有在shell脚本中工作的命令是否也在命令提示符下工作?

在Linux shell中,所有在shell脚本中工作的命令是否也在命令提示符下工作?,linux,shell,Linux,Shell,我试图在将代码放入脚本之前以交互方式测试代码,并想知道脚本中是否有行为不同的东西?当执行脚本时,它有自己的环境变量,这些变量是从父进程(执行命令的shell)继承的。只有导出的变量对子脚本可见 更多信息: 顺便说一句,如果希望脚本在与执行脚本的shell相同的环境中运行,可以使用point命令: . script.sh 这将避免为shell脚本创建新进程。执行脚本时,它有自己的环境变量,这些变量是从父进程(执行命令的shell)继承的。只有导出的变量对子脚本可见 更多信息: 顺便说一句,如果希

我试图在将代码放入脚本之前以交互方式测试代码,并想知道脚本中是否有行为不同的东西?

当执行脚本时,它有自己的环境变量,这些变量是从父进程(执行命令的shell)继承的。只有导出的变量对子脚本可见

更多信息:

顺便说一句,如果希望脚本在与执行脚本的shell相同的环境中运行,可以使用point命令:

. script.sh

这将避免为shell脚本创建新进程。

执行脚本时,它有自己的环境变量,这些变量是从父进程(执行命令的shell)继承的。只有导出的变量对子脚本可见

更多信息:

顺便说一句,如果希望脚本在与执行脚本的shell相同的环境中运行,可以使用point命令:

. script.sh

这将避免为shell脚本创建新进程。

脚本的运行方式与在shell提示下键入内容的方式完全相同。甚至循环和if语句也可以在shell提示符下键入。shell将不断请求更多内容,直到它有一个完整的语句要执行。

脚本的运行方式与在shell提示下键入内容的方式完全相同。甚至循环和if语句也可以在shell提示符下键入。shell将不断要求更多,直到它有一个完整的语句要执行。

正如David正确指出的那样,请注意环境变量

根据您打算如何启动脚本,.profile和.bashrc中设置的变量可能不可用。这取决于脚本是否在中启动以及它是否是登录shell。看

我看到的一个常见问题是,脚本在从shell运行时工作,但在从另一个应用程序cron、nagios、buildbot等运行时失败,因为未设置$PATH

要测试命令/脚本是否可以在干净的会话中工作,您可以使用以下方式登录:

ssh -t localhost "/bin/bash --noprofile --norc"
这确保了我们不会从父shell继承任何导出的变量,也不会从.profile或.rc继承任何变量


如果它在一个干净的会话中工作,并且您的命令中没有一个期望在其中,那么您就可以开始了

正如David正确指出的,要注意环境变量

根据您打算如何启动脚本,.profile和.bashrc中设置的变量可能不可用。这取决于脚本是否在中启动以及它是否是登录shell。看

我看到的一个常见问题是,脚本在从shell运行时工作,但在从另一个应用程序cron、nagios、buildbot等运行时失败,因为未设置$PATH

要测试命令/脚本是否可以在干净的会话中工作,您可以使用以下方式登录:

ssh -t localhost "/bin/bash --noprofile --norc"
这确保了我们不会从父shell继承任何导出的变量,也不会从.profile或.rc继承任何变量


如果它在一个干净的会话中工作,并且您的命令中没有一个期望在其中,那么您就可以开始了

这是cron作业的典型问题:cron环境非常简单,$PATH很可能与您自己的不同。@glenn太正确了!将添加到上面的列表中。谢谢。这是cron作业的一个典型问题:cron环境非常简单,$PATH很可能与您自己的不同。@glenn太正确了!将添加到上面的列表中。谢谢。我从来都不喜欢用电脑。速记-源代码在90%的shell中都做同样的事情,而且更容易阅读。我同意你的看法,托比,我只是说可以使用它并避免环境变量的差异:我从来都不喜欢使用。速记-源代码在90%的shell中都做同样的事情,而且更容易阅读。我同意你的观点,托比,我只是说可以使用它并避免环境变量的差异:如果脚本使用某些环境变量,它将不会以相同的方式运行。它将继承你正在运行的shell的环境。在您的回答中,您提到了脚本的来源,它也将以相同的方式继承shell的环境。如果脚本使用某些环境变量,它将不会以相同的方式运行。它将继承您正在运行的shell的环境。在您的回答中,您提到了脚本的来源,它也将以相同的方式继承shell的环境。