![](/img/trans.png)
[英]How can i set my environment variable in c++ without passing command line argument
[英]Can I set an environment variable on Bash's command line?
我正在嘗試為Bash設置一個環境變量。 但是,我需要在任何shell的啟動腳本(包括/etc/profile
)之前設置它,因為/etc/profile
根據此變量的值采取不同的行為。
具體來說,我想創建一個像git-bash
一樣的MinTTy快捷方式,但是我需要在shell啟動之前設置MSYSTEM
環境變量,或者至少在它開始處理任何啟動腳本之前。
MinTTy在啟動shell之前設置環境變量的解決方案也將被接受。
編輯:我真正想要的是BASH的一個命令行選項,它將設置一個環境變量,有點類似於大多數C(和其他)編譯器的-D
選項。 這將是一個“一般情況”的解決方案。 或者,MinTTy的類似選項(命令行或配置)也可以完成這項工作。
根據我的具體需要,我有一個潛在的解決方法:運行一個BASH腳本 - 沒有啟動腳本 - 設置我所需的變量,並exec
另一個shell作為登錄shell。
定義快捷方式文件的目標,如下所示:
C:\cygwin64\bin\mintty.exe /bin/bash -l -c "MSYSTEM=MINGW64 exec -l bash"
這個命令:
bash
作為登錄shell( -l
) -c
),它定義了感興趣的環境變量( MSYSTEM=MINGW64
),然后調用bash
( exec -l bash
)的新副本,它繼承了現有的環境,加上新的定義,但是獲取了配置文件的來源。 (s)再次,由於-l
-
以$0
( -bash
)中報告的可執行文件名稱,如果你只使用-
啟動Mintty會發生這種情況,這就是常規的Cygwin64 Terminal
快捷方式所做的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腳本,如我的這個答案所示 ,可以防止這種情況。
您應該能夠像在命令提示符中那樣執行相同操作。 因此,您可以這樣做:
set VAR=VarContents
雖然我已經接受了上面的答案,但我發現這個鏈接專門解決了我的問題的第二部分(特定於Mintty)或者在運行命令之前設置環境變量的另一種方法。
Windows快捷方式的內容可以是:
C:\cygwin64\bin\mintty.exe -t "Title" /bin/env "MSYSTEM=MINGW64" /bin/bash -l
( Mintty Tips建議 : 設置環境變量 。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.