configuração bash shell varible para pwd [duplicate]

1

Estou tentando definir uma variável shell para $ PWD - o caminho do qual o script foi executado. Isto é o que eu tenho, setenv.sh:

#!/bin/bash
export WORK_AREA=$PWD      #also tried "$PWD", $(pwd), 'pwd'

Mas quando eu corro do shell

> ./setenv.sh
> echo $WORK_AREA

WORK_AREA não tem valor

    
por Meir 24.10.2017 / 18:14

2 respostas

0

export funciona "para baixo" não "para cima". Quando você exporta um valor no script que é filho do shell, ele não o exportará para o shell que é seu pai. Isso só mudará o ambiente para seus próprios filhos.

    
por 24.10.2017 / 18:18
0

Você precisa criar o script se quiser que ele afete seu ambiente atual de shell, por exemplo:

source setenv.sh

Ou usando a notação de pontos:

. setenv.sh

Quando você executa um script, ele é executado em um subshell, como se você o tivesse executado usando o comando bash . As alterações no ambiente subshell não afetam o ambiente pai. Note que estamos falando apenas de variáveis de ambiente aqui. Se você modificar um arquivo em um subshell, essa mudança será definitivamente transferida para o shell pai.

Veja a postagem relacionada do SuperUser:

por 24.10.2017 / 18:18