Bash 如何在当前进程中使用dart.io来生成shell脚本?
Bash 如何在当前进程中使用dart.io来生成shell脚本?,bash,dart,dart-io,Bash,Dart,Dart Io,Process.run(以及所有变体)抱怨使用了“.”和“source”命令。是否有一种内置的方法可以通过run方法实现这一点,或者是否有一个特定的可执行文件可以尝试调用,它将模仿bash的源命令?所有这些命令都有一个runInShell参数。如果这不能解决问题,请使用shell-c.xxx“ 如果Process.run('.somescript.sh,runInShell:true)
Process.run
(以及所有变体)抱怨使用了“.”和“source”命令。是否有一种内置的方法可以通过run方法实现这一点,或者是否有一个特定的可执行文件可以尝试调用,它将模仿bash的源命令?所有这些命令都有一个runInShell
参数。如果这不能解决问题,请使用shell-c.xxx“
如果Process.run('.somescript.sh,runInShell:true)然后Process.run('someexecutable')代码>您什么也得不到,因为当第一次调用结束时,所创建的环境也随之消亡。
我想你想要的是
Process.run('. somescript.sh && someexecutable', runInShell: true);
我不知道dart,但在简要阅读了文档之后,我很清楚,Process.run
在非shell上下文中直接调用该流程。如果您想source
,您需要做的是调用shell解释器,例如bash,因此您需要运行bash-c'blah blah'
,或者将source
和其他命令放在一个被屏蔽的可执行脚本中,然后运行该脚本。source
(又称
)命令在当前shell中运行一个脚本。由于dart不是shell,因此该命令在该上下文中没有多大意义。你到底想做什么?@GordonDavisson他可能只是想导出一些环境变量。我需要的源代码脚本确实导出了一些环境变量,特别是,在$PATH中添加了一些新程序。我的目标是能够通过Dart应用程序以编程方式获取此脚本的源代码,这样我就可以在添加到$PATH的新程序上调用Process.run()。从文档中,runInShell默认为false-因此不将其设置为true,而通过Process.run()设置env变量应该添加到我的应用程序正在运行的当前环境中,对吗?另外,您可以编辑您的答案,以包括对Process.run()的调用作为示例吗?@Crunchex:不,子进程(Process.run创建的AIUI——在其任何模式下)无法在父进程中设置环境变量。