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