更新時(shí)間:2022-06-24 10:07:43 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1911次
最常見的方法之一是使用System.getenv(),它接受一個(gè)可選String參數(shù)。根據(jù)是否String傳遞了參數(shù),方法會(huì)返回不同的值。具體來說:
如果 aString被傳遞并且它匹配內(nèi)部環(huán)境中的一個(gè)鍵Map,那么它的值被返回。如果沒有找到匹配的鍵,null則返回。如果未String傳遞參數(shù),則返回包含所有環(huán)境變量及其值的只讀值。Map 的鍵是環(huán)境變量名稱,其值是值。java.util.Map
請記住,不同的平臺以不同的方式運(yùn)行,例如,在 UNIX、Linux 和 macOS 上,環(huán)境變量區(qū)分大小寫,而在 Microsoft Windows上則不是。
下面,您可以看到如何使用該方法檢索 LinuxSHELL環(huán)境變量(包含用戶的 shell)的示例。
package com.settermjd.twilio.envvars;
public class Main {
public static void main(String[] args) {
System.out.println(
String.format("The current shell is: %s.", System.getenv("SHELL"))
);
}
}
如果要提供默認(rèn)值,請System.genenv()按以下方式調(diào)用:
System.getenv().getOrDefault("SHELL", "/bin/bash")
UNIX、Linux 和 macOS
在 UNIX、Linux 和 macOS 上,可以通過三種核心方式設(shè)置環(huán)境變量。
可用于當(dāng)前會(huì)話和所有子進(jìn)程
您可以使用內(nèi)置的導(dǎo)出命令初始化環(huán)境變量,以便它們可用于當(dāng)前會(huì)話,包括當(dāng)前會(huì)話和在當(dāng)前會(huì)話中啟動(dòng)的任何進(jìn)程,以及在當(dāng)前會(huì)話中啟動(dòng)的任何進(jìn)程,如示例中所示以下。
export USER_ID=1
以這種方式設(shè)置環(huán)境變量不是永久性的。如果要永久設(shè)置環(huán)境變量,則需要在系統(tǒng)范圍的啟動(dòng)文件/etc/profile或用戶特定的啟動(dòng)文件之一中設(shè)置它,即~/.bash_profile、~/.bash_login , 和~/.profile。
可用于當(dāng)前會(huì)話
您可以初始化一個(gè)環(huán)境變量,使其可用于當(dāng)前會(huì)話,但不能用于任何子進(jìn)程,如下例所示,不使用該export命令。
USER_ID=1
可用于特定進(jìn)程
最后,您可以初始化一個(gè)環(huán)境變量,使其僅對特定進(jìn)程可用。當(dāng)只有該過程需要變量時(shí),這很有幫助。在啟動(dòng)所需的過程時(shí),您可以按照下面的示例對其進(jìn)行初始化。
USER_ID=1 retrieveUserDetails
微軟Windows
在 Microsoft Windows 中設(shè)置環(huán)境變量略有不同。您可以通過控制面板設(shè)置它們,也可以在命令提示符或 PowerShell 控制臺中設(shè)置它們。下面有后兩者的例子。
# Set USER_ID in the Windows Command Prompt
set USER_ID=1
# Set USER_ID in the Windows PowerShell console
$Env:USER_ID = 1
雖然以這種方式設(shè)置環(huán)境變量可能非常有效,但它也會(huì)很快變得很麻煩。例如,通過在操作系統(tǒng)的 shell 中設(shè)置它們,沒有應(yīng)用程序需要的變量的具體列表,也沒有關(guān)于變量的用途或它必須是什么數(shù)據(jù)類型的信息。
鑒于此,除其他原因外,The 12-Factor App建議將配置與代碼嚴(yán)格分離。通過使用.env (dotenv) 文件,這種做法很快在整個(gè)開發(fā)者社區(qū)中流行起來。這些是存儲鍵/值對列表的純文本文件,定義了應(yīng)用程序工作所需的環(huán)境變量,如下例所示。
USER_ID=1
TWILIO_AUTH_TOKEN=1234567890987654321
為了簡化項(xiàng)目的開始,出現(xiàn)了一種更常見的做法,即在項(xiàng)目中包含一個(gè).env.example文件,該文件包含所有鍵,但沒有它們的值。當(dāng)新開發(fā)人員開始開發(fā)應(yīng)用程序時(shí),他們會(huì)復(fù)制該文件,將其命名為.env并為適用于其本地開發(fā)環(huán)境的每個(gè)鍵設(shè)置值。
假設(shè)上面的示例是我們項(xiàng)目的.env文件,我們可以使用諸如dotenv-java之類的包來使變量對我們的應(yīng)用程序可用。
如果你在 Kotlin 中開發(fā),你可以使用dotenv-kotlin。
您可以在下面的代碼示例中看到使用包的示例。
package com.settermjd.twilio.envvars;
import io.github.cdimascio.dotenv.Dotenv;
import io.github.cdimascio.dotenv.DotenvException;
public class Main {
public static void main(String[] args) {
Dotenv dotenv = null;
dotenv = Dotenv.configure().load();
System.out.println(String.format(
"Hello World. Shell is: %s. Name is: %s",
System.getenv("SHELL"),
dotenv.get("NAME")
));
}
}
代碼初始化一個(gè)新Dotenv對象 dotenv,并調(diào)用讀取位于項(xiàng)目根目錄中的.envDotenv.configure().load()中的環(huán)境變量。之后,用于檢索傳遞給它的對象的值。如果未找到匹配的鍵,則該方法返回。dotenv.get()Stringnull
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級 202925
初級 203221
初級 202629
初級 203743