.sh를 사용하여 환경 변수를 영구적으로 설정

.sh를 사용하여 환경 변수를 영구적으로 설정

시청 후.sh 파일을 사용하여 환경 변수 설정그리고환경 변수를 영구적으로 설정하는 방법.sh파일에서 영구 환경 변수를 적절하게 설정하는 방법에 대해 여전히 혼란스럽습니다. (저는 Linux를 많이 사용하므로 확실히 초보자입니다. )

내 특별한 경우에는 다음이 있습니다 setup-env.sh.

# Copyright (c) 2015-2019 LunarG, Inc.

# source this file into an existing shell.

VULKAN_SDK="$(dirname "$(readlink -f "${BASH_SOURCE:-$_}" )" )/x86_64"
export VULKAN_SDK
PATH="$VULKAN_SDK/bin:$PATH"
export PATH
LD_LIBRARY_PATH="$VULKAN_SDK/lib:${LD_LIBRARY_PATH:-}"
export LD_LIBRARY_PATH
VK_LAYER_PATH="$VULKAN_SDK/etc/vulkan/explicit_layer.d"
export VK_LAYER_PATH

/home/jonathan/.bashrc다음을 포함하도록 편집할 수 있습니다 .

export VK_LAYER_PATH="/home/jonathan/Vulkan/1.2.170.0/x86_64/etc/vulkan/explicit_layer.d"
export VULKAN_SDK="/home/jonathan/Vulkan/1.2.170.0/x86_64"
export LD_LIBRARY_PATH="/home/jonathan/Vulkan/1.2.170.0/x86_64/lib:"

이것이 . setup-env.sh그들에게 달리기가 하는 일이다.

하지만 이는 어색하고 불필요하게 어려워 보입니다. 스크립트를 실행하고 영구 환경 변수를 설정하는 더 좋은 방법이 있습니까?

답변1

이것이 복잡한 이유는 스크립트가 현재 환경의 복사본인 자체 하위 셸에서 실행되기 때문입니다. 따라서 스크립트가 종료되고 원래 셸로 돌아가면 스크립트에서 설정한 모든 변수는 삭제됩니다. 그러나 이런 방식으로 변수를 설정하는 것이 정말 중요하기 때문에 이를 달성할 수 있는 도구가 있습니다. 다음 명령을 찾고 있습니다 .(또는 ).source

$ help .
.: . filename [arguments]
    Execute commands from a file in the current shell.
    
    Read and execute commands from FILENAME in the current shell.  The
    entries in $PATH are used to find the directory containing FILENAME.
    If any ARGUMENTS are supplied, they become the positional parameters
    when FILENAME is executed.
    
    Exit Status:
    Returns the status of the last command executed in FILENAME; fails if
    FILENAME cannot be read.

따라서 귀하의 경우 해당 파일의 변수를 현재 셸에 설정하려면 다음을 수행할 수 있습니다.

$ . /path/to/setup-env.sh

또는 각 셸에 대해 이 작업을 수행하려면 다음 줄을 자신의 줄 ~/.profile(또는 존재하는 경우 /.bash_profile)에 추가할 수 있습니다.

. /path/to/setup-env.sh

여기 에 추가할 수는 있지만 ~/.bashrc로그인하지 않은 새로운 대화형 쉘을 열 때마다 이를 읽고(그래픽 Linux 시스템에서 터미널을 열 때 얻을 수 있는 내용) 다음 ~/.profile사용자로만 읽을 수 있기 때문에 효율성이 떨어집니다. 로그인 쉘이므로 로그인 시 한 번만 읽어야 하고 다시는 읽어서는 안 됩니다. 이제 일부 시스템은 그래픽으로 로그인할 때 소스를 제공하지 않으므로 ~/.profile에서 작동하지 않는 경우 ~/.profile계속해서 에 추가하세요 ~/.bashrc.

마지막으로 단순화할 수 있습니다. 별도의 변수 정의와 명령을 사용할 이유가 없습니다. export모든 작업을 한 단계로 수행할 수 있습니다.

export VULKAN_SDK="$(dirname "$(readlink -f "${BASH_SOURCE:-$_}" )" )/x86_64"
export PATH="$VULKAN_SDK/bin:$PATH"
export LD_LIBRARY_PATH="$VULKAN_SDK/lib:${LD_LIBRARY_PATH:-}"
export VK_LAYER_PATH="$VULKAN_SDK/etc/vulkan/explicit_layer.d"

추가 자료:

답변2

기간이 "어색하고 불필요하게 어렵다"면 제가 한 대로 파일에 별칭을 선언할 수 있습니다 .bashrc. 예를 들어:

alias setenv=". ~/path/to/setup-env.sh"

그런 다음 명령을 실행 setenv하여 현재 쉘에서 실행하십시오. ( help alias자세한 내용은 참고자료를 참조하세요.)

관련 정보