Bash 为什么可以';t吞咽外壳集环境变量?
我有以下简单的Bash 为什么可以';t吞咽外壳集环境变量?,bash,gulp,gulp-shell,Bash,Gulp,Gulp Shell,我有以下简单的gulpfile.js脚本: var gulp=require('gulp'); var shell=需要('gulp-shell'); gulp.task('run-me',shell.task([ “导出参数=5”, “echo$sweet_param” ])); 问题是未打印$sweet_param变量 在Git Bash下在Windows 8.1上运行时失败,并显示以下消息: [16:51:06]正在启动“运行我”。。。 “导出”未被识别为内部或外部命令, 可操作的程序或
gulpfile.js
脚本:
var gulp=require('gulp');
var shell=需要('gulp-shell');
gulp.task('run-me',shell.task([
“导出参数=5”,
“echo$sweet_param”
]));
问题是未打印$sweet_param
变量
在Git Bash下在Windows 8.1上运行时失败,并显示以下消息:
[16:51:06]正在启动“运行我”。。。
“导出”未被识别为内部或外部命令,
可操作的程序或批处理文件。
[16:51:06]“运行我”在29毫秒后出错
[16:51:06]插件“gulp shell”中出现错误
信息:
命令'export sweet_param=5'失败,退出代码为1
在Linux的情况下,任务没有错误地执行,但是空白行被打印而不是预期值:
[16:49:32]正在启动“运行我”。。。
[16:49:32]26毫秒后完成“运行我”
如果任务中的命令是在两个操作系统上的bash中手动执行的,5
将成功回显
使用的软件:
- 吞咽3.8.11
- 吞壳0.4.1
- Node.js v0.12.2
- bash版本3.1.20(4)-在Windows上发布(i686 pc msys)
- linux上的bash版本4.3.33(1)-发行版(x86_64-unknown-linux-gnu)
谢谢大家! Bash只允许在一个Bash会话期间存在环境变量。你打字的时候
export sweet_param=5
只要bash打开,sweet_param
就存在。合上外壳,sweet_param
就不见了
gulpshell
每行接受一个命令,但对于每一行,它都会启动另一个bash:openbash>>执行行>>终止bash>>下一步。因此,在那里的每一行之后,所有先前设置的参数都将消失
尝试:
要查看是否所有执行都在一行中,您的参数将停止
为了写得更漂亮一点,你可以用这样的东西:
gulp.task('run-me', shell.task([
'export sweet_param=5',
'echo $sweet_param'
].join(' && '));
至于Win问题:Git bash仍然不是Unix shell。您应该尝试Cygwin或consorts来实现这一点。Bash只允许环境变量在一次Bash会话期间存在。你打字的时候
export sweet_param=5
只要bash打开,sweet_param
就存在。合上外壳,sweet_param
就不见了
gulpshell
每行接受一个命令,但对于每一行,它都会启动另一个bash:openbash>>执行行>>终止bash>>下一步。因此,在那里的每一行之后,所有先前设置的参数都将消失
尝试:
要查看是否所有执行都在一行中,您的参数将停止
为了写得更漂亮一点,你可以用这样的东西:
gulp.task('run-me', shell.task([
'export sweet_param=5',
'echo $sweet_param'
].join(' && '));
至于Win问题:Git bash仍然不是Unix shell。你应该试试Cygwin或配偶来做这件事。这很有道理!不过,Git Bash for Windows的有趣之处在于,如果我将其手动输入控制台,
export
命令可以工作“不使用调用它的环境,而是使用确定它存在的环境。这将是Windows命令行。这非常有意义!不过,Git Bash for Windows的有趣之处在于,如果我将其手动输入控制台,export
命令可以工作。可能是*gulp shell“不使用调用它的环境,而是使用它确定存在的环境。这将是Windows命令行。