궁금해서 입니다. 와 같은 변수를 에코하는 위치에서 파일을 찾을 수 있는 방법이 있습니까 $PATH
?$CDPATH
두 번째 질문:
또한 bash는 이러한 변수를 어떻게 알 수 있습니까? 응 env
? 그렇다면 이것은 파일인가요? 이와 같은 새로운 맞춤 변수를 추가하는 것이 가능합니까?
답변1
첫 번째 질문 답변: $PATH 변수는 로그인 시 파일 수를 기준으로 작성되며 표시되는 출력은 echo $PATH
결과를 병합한 결과입니다(메모리에 보관됨).
PATH 변수가 설정된 파일(여러 파일이 있을 수 있음)을 찾으려면 로그인 시 읽는 파일을 고려해야 합니다. 아래 목록은 배포판에 따라 다를 수 있지만 좋은 시작점이 될 것입니다.
/etc/profile, /etc/profile.d/*, /etc/bashrc, /etc/environment, ~/.bashrc, ~/.bash_profile, ~/.bash_login, ~/.profile.
두 번째 질문에 대한 답변위에서 언급한 것처럼 변수는 메모리에 보관되며 필요에 따라 새 변수를 수정하고 추가할 수 있습니다. 예를 들어 정의된 PATH에 추가합니다.
[root@re ~]# PATH=$PATH:/opt/some/path
[root@re ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/some/path
위의 내용은 현재 세션에만 유효합니다. 이를 영구적으로 만들려면 로그인 중에 가져온 파일 중 하나에 추가해야 합니다.
JAVA_HOME을 추가하고 Java 바이너리가 시스템 경로 변수에 있는지 확인하고 싶다고 가정해 보겠습니다. 다음 내용으로 /etc/profile.d/my-java-env.sh라는 새 파일을 생성하겠습니다.
[root@re ~]# cat /etc/profile.d/my-java-env.sh
# Here we are adding java bin folder to existing path.
PATH=$PATH:/usr/java/jdk1.8.0_20/bin
# Here we are creating new variable pointing to JAVA_HOME
JAVA_HOME=/usr/java/jdk1.8.0_20
위의 내용을 적용하려면 다시 로그인하세요.
$CDPATH기본적으로 내가 사용하는 배포판(Ubuntu, CentOS)에서 변수는 비어 있지만(설정되지 않음) 동일한 논리가 적용됩니다. 설정되어 있으면 이는 아마도 로그인 중에 가져온 파일 중 하나에서 수행될 것입니다(위에서 언급했듯이) .