我可以在Bash的命令行上设置环境变量吗?

Menachem

我正在尝试为Bash设置环境变量。但是,我需要任何shell的启动脚本(包括/etc/profile)之前设置它,因为/etc/profile基于此变量的值的行为不同。

具体来说,我想创建一个类似于MinTTy的快捷方式,其工作方式类似于git-bash,但是我需要MSYSTEM在外壳启动之前或至少在其开始处理任何启动脚本之前设置环境变量。

具有MinTTy在启动外壳之前设置环境变量的解决方案也将被接受。

编辑:我真正想要的是BASH的一个命令行选项,它将设置一个环境变量,有点类似于-D大多数C(和其他)编译器选项。这将是一个“一般情况”解决方案。或者,也可以使用与MinTTy类似的选项(命令行或配置)。

对于我的特定需求,我有一个可能的解决方法:运行BASH脚本-不包含启动脚本-设置我的必需变量并将exec另一个shell作为登录shell。

mklement0

定义快捷方式文件的目标,如下所示:

C:\cygwin64\bin\mintty.exe /bin/bash -l -c "MSYSTEM=MINGW64 exec -l bash"

该命令:

  • bash直接作为登录外壳程序(-l调用
  • 传递给它的命令(-c定义感兴趣的环境变量() MSYSTEM=MINGW64),然后调用的新副本bashexec -l bash再次),其继承了现有的环境,再加上新的定义,但源的配置文件(一个或多个),由于-l
    (并预置-$0-bash)中报告的可执行文件名称,如果您使用just来启动Mintty -,这是常规Cygwin64 Terminal快捷方式的工作)。

另一种方法是首先Windows中设置环境变量

  • [OP的不可选项]如果环境变量应始终具有相同的值,请按照以下步骤进行永久设置:运行sysdm.cpl,转到Advanced选项卡,单击Environment Variables...MSYSTEM根据需要定义变量

  • 要定义变量ad-hoc,请按如下所示创建一个批处理文件,并将批处理文件作为快捷方式目标:

    @echo off
    
    # Define the env. variable with the desired value.
    set "MSYSTEM=MINGW64"
    
    # Invoke Mintty with a login shell, which will now see the env. variable.
    # Adjust the path to mintty.exe as needed.
    c:\cygwin64\bin\mintty.exe -
    

注意:从快捷方式打开批处理文件会在打开Mintty之前短暂打开一个常规控制台窗口,这可能是不希望的。

我的答案所示一个简单的帮助程序WSH脚本可以防止这种情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

JavaFX-在Windows 10上,我可以设置环境变量而不使用命令行类路径开关吗?

来自分类Dev

如何在命令行上设置环境变量并使它出现在命令中?

来自分类Dev

如何确定由netbeans在命令行上设置的环境变量

来自分类Dev

如何在PuTTY命令行上设置私钥和环境变量

来自分类Dev

在bash脚本中,我们可以使用命令行参数设置变量值吗?

来自分类Dev

在 bash 中,我可以设置一个仅在第一次访问命令时执行命令的环境变量吗?

来自分类Dev

我可以通过编程方式设置环境变量吗?

来自分类Dev

我可以从Windows命令行导入设置并在IntelliJ上打开项目吗?

来自分类Dev

是否有可能“愚弄” java从命令行设置环境变量

来自分类Dev

通过提示而不是在命令行中设置环境变量

来自分类Dev

如何在Javascript文件而非命令行中设置环境变量?

来自分类Dev

在单元文件中从命令行设置环境变量

来自分类Dev

如何为Visual Studio命令行永久设置环境变量

来自分类Dev

putenv() 无法为父命令行设置环境变量

来自分类Dev

使用批处理文件通过命令行设置环境变量

来自分类Dev

如何在Verilog中使用环境变量或命令行设置宏的值?

来自分类Dev

Windows中是否可以使用任何命令行工具来编辑环境变量?

来自分类Dev

我可以在命令行上使用否定的通配符吗?

来自分类Dev

Laravel env()或config()在命令行上获取环境变量

来自分类Dev

在Docker命令行上在容器内扩展环境变量

来自分类Dev

环境变量中的带引号的字符串传递给命令行上的程序

来自分类Dev

在命令行中动态建立环境变量

来自分类Dev

使用环境变量运行命令行程序

来自分类Dev

XCUITests-通过命令行传递环境变量

来自分类Dev

环境变量作为命令行参数

来自分类Dev

Xcode环境变量和命令行参数

来自分类Dev

从bash命令行设置php变量

来自分类Dev

将脚本添加到Linux“ at”命令队列时,我可以访问设置的环境变量吗?

来自分类Dev

我们可以通过Bash命令行执行将变量名作为参数值读取吗?

Related 相关文章

  1. 1

    JavaFX-在Windows 10上,我可以设置环境变量而不使用命令行类路径开关吗?

  2. 2

    如何在命令行上设置环境变量并使它出现在命令中?

  3. 3

    如何确定由netbeans在命令行上设置的环境变量

  4. 4

    如何在PuTTY命令行上设置私钥和环境变量

  5. 5

    在bash脚本中,我们可以使用命令行参数设置变量值吗?

  6. 6

    在 bash 中,我可以设置一个仅在第一次访问命令时执行命令的环境变量吗?

  7. 7

    我可以通过编程方式设置环境变量吗?

  8. 8

    我可以从Windows命令行导入设置并在IntelliJ上打开项目吗?

  9. 9

    是否有可能“愚弄” java从命令行设置环境变量

  10. 10

    通过提示而不是在命令行中设置环境变量

  11. 11

    如何在Javascript文件而非命令行中设置环境变量?

  12. 12

    在单元文件中从命令行设置环境变量

  13. 13

    如何为Visual Studio命令行永久设置环境变量

  14. 14

    putenv() 无法为父命令行设置环境变量

  15. 15

    使用批处理文件通过命令行设置环境变量

  16. 16

    如何在Verilog中使用环境变量或命令行设置宏的值?

  17. 17

    Windows中是否可以使用任何命令行工具来编辑环境变量?

  18. 18

    我可以在命令行上使用否定的通配符吗?

  19. 19

    Laravel env()或config()在命令行上获取环境变量

  20. 20

    在Docker命令行上在容器内扩展环境变量

  21. 21

    环境变量中的带引号的字符串传递给命令行上的程序

  22. 22

    在命令行中动态建立环境变量

  23. 23

    使用环境变量运行命令行程序

  24. 24

    XCUITests-通过命令行传递环境变量

  25. 25

    环境变量作为命令行参数

  26. 26

    Xcode环境变量和命令行参数

  27. 27

    从bash命令行设置php变量

  28. 28

    将脚本添加到Linux“ at”命令队列时,我可以访问设置的环境变量吗?

  29. 29

    我们可以通过Bash命令行执行将变量名作为参数值读取吗?

热门标签

归档