Não é possível definir JAVA_HOME no Ubuntu com espaço no caminho em / etc / environment

-1

Estou irritado tentando isso, mas tudo o que estou tentando fazer é definir JAVA_HOME no arquivo / etc / environment no shell Bash no Windows que está sendo oferecido agora com o Windows. Meu Java local está em C: \ Arquivos de Programas \ Java \ jdk1.8.0_91, então no meu / etc / environment estou colocando

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export JAVA_HOME="/mnt/c/Program\ Files/Java/jdk1.8.0_91/"

Leia on-line que, para especificar um espaço, deve-se usar \ . Ao fazer isso:

cd /mnt/c/Program\ Files/Java/jdk1.8.0_91/

Eu posso navegar para o diretório, mas colocando o mesmo no arquivo / etc / environment e obtendo-o, se eu rodar

echo $JAVA_HOME
/mnt/c/Program\ Files/Java/jdk1.8.0_91/

Eu posso dizer que é incorreto, pois está lendo como \, e é por isso que fazer

cd $JAVA_HOME

falha

Ubuntu 14.04.5 LTS

Se alguém puder sugerir como resolver isso, será muito bem-vindo. Obrigado.

    
por user3044240 17.08.2017 / 15:54

3 respostas

1

Para usar um espaço no mundo do Linux, você precisa fazer um (e apenas um) dos seguintes:

  1. Cite todas as coisas:

    JAVA_HOME="/mnt/c/Program Files/Java/jdk1.8.0_91/"
    cd "$JAVA_HOME"
    
  2. Escape do espaço:

    JAVA_HOME=/mnt/c/Program\ Files/Java/jdk1.8.0_91/
    cd "$JAVA_HOME"
    

Mas não os dois. A questão aqui é que a citação protege a string citada e faz com que ela seja interpretada literalmente. Então, enquanto foo\ bar significa foo , um espaço e, em seguida, bar , "foo\ bar" significa foo , uma barra invertida, um espaço e, em seguida, bar .

Além disso, sempre que você usar uma variável, você deve colocá-la dentro de aspas duplas. Caso contrário, o comando para o qual você está passando lerá dois argumentos. Você pode ver o que deu errado se você ativar a depuração bash executando set -x (execute set +x para desativá-la):

$ set -x
$ cd $JAVA_HOME
+ cd /mnt/c/Program Files/Java/jdk1.8.0_91/
bash: cd: too many arguments

O que você executou foi cd /mnt/c/Program Files/Java/jdk1.8.0_91/ . Como o espaço em branco separa argumentos, isso significa que você passou cd dois argumentos separados: /mnt/c/Program e Files/Java/jdk1.8.0_91/ . As citações fazem com que cd (ou qualquer outra ferramenta) leia tudo como um único argumento.

Leitura adicional:

por terdon 17.08.2017 / 17:39
4

Não use exportação em /etc/environment , é apenas um arquivo simples e não um script. Ele está lendo as linhas uma por uma e está definindo as variáveis dessa maneira.

Novamente, ele não executará comandos.

    
por Ziazis 17.08.2017 / 16:05
0

Agora, você precisa definir uma variável JAVA_HOME para o ambiente.

Faça o seguinte:

  1. Encontre o caminho onde o seu java está instalado. (Provavelmente em / usr / lib / jvm / {JAVA_VERSION}).

  2. Agora, no outro terminal, abra o sudo vi / etc / environment

  3. Você precisa digitar: JAVA_HOME="/ usr / lib / jvm / java-9-oracle"
por Murtaza Manasawala 03.04.2018 / 23:04