在bash中的Linux(Ubuntu 11.04)上,是否可以临时设置一个环境变量,该变量在脚本的持续时间内只与普通变量不同?例如,在shell脚本中,通过临时将HOME设置为当前工作目录中的文件夹,然后启动应用程序,制作一个保存到HOME便携式应用程序。如何仅在脚本的持续时间内设置环境变量?
回答
只要把
export HOME=/blah/whatever
在您希望的变化发生在脚本的地步。由于每个进程都有自己的一组环境变量,因此当脚本终止时(这个环境变化的bash实例),这个定义将自动停止。
这是误导性的持续时间设置也将很难。 'export'会将变量传递给子壳体,但它不控制父壳体。如果您正在编写以“#!/ bin/sh”或类似内容开头的脚本,则在脚本退出时,您设置的任何变量都将消失。 – brightlancer
@brightlancer,这是真的,但似乎并不矛盾我写的任何东西。 (除了脚本可能启动后台进程的可能性之外,但我认为这超出了OP的复杂程度,只会混淆)。 –
导出是不必要的。此外,只有当他的脚本调用解释器(#!/ bin/sh等)时,您的答案才有效。如果他的“剧本”没有,那么你刚刚告诉他的剧本将会持续到剧本结尾。这就是为什么我说你的答案是误导性的 - 这可能是正确的,也可能不是,但它肯定有一部分是没有必要和令人困惑的,因为它可能导致某人认为“出口”是他寻找的必要元素。 – brightlancer
env VAR=value myScript args ...
或'VAR = value myScript args ...' – Rockallite
1. PATH = $ PATH:XYZ echo $ PATH | grep XYZ'虽然没有任何输出? 2.使用和不使用'env'有什么区别? – qubodup
,因为在**执行echo命令之前,shell会扩展PATH变量**。你需要延迟这种扩展。一种方法:'PATH = $ PATH:XYZ sh -c'echo $ PATH'| grep XYZ' - 单引号是这里的关键 –
VAR1=value1 VAR2=value2 myScript args ...
我自己多次运行'vblank_mode = 0 glxgears'。它可以工作,但它也表示'vblank_mode = 0:command not found'在运行后,而prepend'env'不会导致这种情况。 [测试...]显然zsh不喜欢它(但仍然使用它),但bash罚款。我想我会从现在开始用'env'方法。 –
- 1. 从.ps1脚本设置环境变量
- 2. 如何在python脚本中设置环境变量
- 3. 如何在CMake脚本中设置PATH环境变量?
- 4. 的Bash shell脚本:如何设置JAVA_HOME环境变量
- 5. node - package.json:如何执行设置环境变量的脚本
- 6. 如何设置与python脚本詹金斯环境变量
- 7. 如何从脚本设置bash环境变量?
- 8. 如何使用shell脚本设置全局环境变量.sh
- 9. 为脚本设置临时环境变量
- 10. 如何在测试DSL脚本时对虚拟jenkins设置环境变量?
- 11. 在本地bash函数变量中设置脚本的环境变量
- 12. 设置环境变量内目标
- 13. 在shell脚本中设置环境变量OS X
- 14. 在Lua 5.3脚本中设置shell环境变量
- 15. 如何设置vsvars32环境变量?
- 16. 如何设置黄瓜环境变量
- 17. 如何为python设置环境变量
- 18. 如何设置CGBITMAP_CONTEXT_LOG_ERRORS环境变量?
- 19. 如何设置TERM环境变量
- 20. 如何永久设置环境变量?
- 21. 如何为Jython设置环境变量?
- 22. 如何永久设置环境变量?
- 23. 我如何设置grails环境变量?
- 24. 如何在调用批处理脚本中设置vbs中的环境变量
- 25. 用于设置环境变量的Shell脚本
- 26. 从gpg加密的shell脚本设置环境变量?
- 27. 永久设置环境变量的Shell脚本
- 28. 设置环境变量
- 29. 设置Maven环境变量
- 30. 设置环境变量
如果你想持续_beyond_脚本 – Nemo