es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intenta acceder a las variables de entorno en Ubuntu /etc/profile con un programa Java.

Estoy escribiendo un programa en el que tengo que obtener algunas variables de entorno como JAVA_HOME con el IDE IntelliJ IDEA en Ubuntu.

He configurado todas mis variables de entorno en /etc/profile y ~/.bashrc, pero con código como System.getenv(), no puedo acceder a las variables que he configurado, ya que el código solo puede acceder a las variables configuradas en /etc/environment.

¿Entonces hay alguna manera de encontrar estas variables en /etc/profile con un programa Java en el sistema Ubuntu?

Mi ejemplo de código:

public class EnvVarTest {
public static void main(String[] args) {
Map<string, string=””> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format(“%s=%s%n”,
envName,
env.get(envName));
}
}
}

Resultado:

LANGUAGE=zh_CN:zh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
XAUTHORITY=/run/user/1000/gdm/Xauthority
SHELL=/bin/bash
OLDPWD=/home/lin/ideaIC-2020.1.4/idea-IC-201.8743.12/bin
TERM=xterm-256color
USER=root
LANG=zh_CN.UTF-8
SUDO_COMMAND=./idea.sh
SUDO_USER=lin
SUDO_GID=1000
DISPLAY=:0
MAIL=/var/mail/root
COLORTERM=truecolor
LOGNAME=root
SUDO_UID=1000
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31:.esd=01;31:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35:.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36:.spx=00;36:*.xspf=00;36:
PWD=/home/lin/code/Test
HOME=/root

/etc/profile: https://i.stack.imgur.com/bz8T0.png</string,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para acceder a las variables de entorno que se han establecido en /etc/profile, puede agregar el siguiente código a su programa Java:

    System.setProperty("java.security.krb5.conf", "/etc/profile");

    Este código establecerá la propiedad del sistema de “java.security.krb5.conf” en la ubicación del archivo de perfil de todo el sistema. Puede reemplazar “java.security.krb5.conf” con el nombre de cualquier variable de entorno establecida en el archivo /etc/profile.

    Después de establecer esta propiedad, puede acceder a las variables de entorno mediante el método System.getenv() en su programa Java, y las variables de entorno establecidas en /etc/profile ahora deberían ser accesibles.

Comments are closed.