_
로 만들 수 있다.export
: for child-processbash -c "CMD"
) 에서 사용하려면 export 해야한다.export
를 붙이지 않으면 지역 변수라, 해당 쉘만 사용할 수 있다.AA
는 export AA
해야 child process 에서 사용할 수 있다.1-1. 해결 방법
부모 프로세스에서 export 해야 child process 에서 사용 가능
export AA
export [option]
export VAR
export VARIABLE
$ export 변수명
$ declare -x 변수 명
==== Parent shell ===
AA=100
export AA
or
declare -x AA
export -f FUNC
export -f FUNCTION_NAME
export -n VAR
: 취소$ export -n 변수명
export -n VAR
unset -v VAR
declare -p VAR
: VAR가 환경변수 인지 확인$ declare -p 변수
e.g.
$ AA="100"
$ declare -p LANG # LANG 변수가 export 되어 있니?
declare -x LANG="en.UTF-8" # 출력에 'x'가 있으면 export 되어 있음
$ declare -p AA
declare -- AA="100" # 출력에 'x'가 없으면 export된 변수는 아님
export -p
: 모든 환경 변수 출력$ export -p
set
set
: 모든 변수와 함수 출력$ set
set VAR
: 로컬변수set VAR=VALUE
set
명령set
명령의 값은 SHELLOPTS
변수에 있다.#!/bin/bash
set test="testing"
ENV | Description |
---|---|
HOME | 사용자의 홈 디렉터리 |
PATH | 실행파일을 찾는 경로 |
LANG | 프로그램 사용 시 기본 지원되는 언어 |
PWD | 사용자의 현재 작업하는 디렉터리 |
TERM | 로그인 터미널 타입 |
SHELL | 로그인해서 사용하는 쉘 |
USER | 사용자의 이름 |
DISPLAY | X 디스플레이 이름 |
VISUAL | visual 편집기의 이름 |
EDITOR | 기본 편집기의 이름 |
COLUMNS | 현재 터미널이나 윈도우 터미널의 컴럼 수 |
PS1 | 명령 프롬프트 변수 |
PS2 | 2차 명령 프롬프트. 명령 행에서 사용하여 명령 행을 연장 햇을 때 나타냄 |
BASH | 사용하는 bash 쉘의 경로 |
BASH_VERSION | bash의 버전 |
HISTFILE | history 파일의 경로 |
HISTFILESIZE | history 파일의 크기 |
HISTSIZE | history에 저장되는 갯수 |
HISTCONTROL | 중복되어지는 명령에 대한 기록 유무를 지정하는 변수 |
HOSTNAME | 호스트의 이름 |
LINES | 터미널의 라인 수 |
LOGNAME | 로그인 이름 |
LS_COLORS | ls 명령의 색상 관련 옵션 |
메일을 보관하는 경로 | |
MAILCHECK | 메일 확인 시간 |
OSTYPE | 운영체제 타입 |
SHLVL | 쉘의 레벨 |
TERM | 터미널 종류 |
UID | 사용자의 UID |
USERNAME | 사용자 이름 |
env
, printenv
는 현재 설정된 환경 변수를 STDOUT으로 출력함echo ${ENV_VARIABLE}
: 특정 ENV_VARIABLE을 echo로 STDOUT으로 출력함unset
$ unset VAR # 변수 VAR를 unset 시도하고, 실패할 경우 함수 VAR를 unset 시도한다.
$ unset -v VAR
declare
, typeset
declare -r
: readonly-r
: 읽기전용으로 선언declare -i
: 정수-i
: 정수declare -A
: associative 배열declare -A arr
declare -f
: 함수$ declare -f [function_name]
-f
: 함수-f
, 인자 없음-f function_name
declare -x
== export
$ AA=100
$ export $AA
-- 같은 역할 --
$ declare -x AA=100
-x
: export 역할decalre -p
: export 확인$ declare -p VAR
e.g.
$ AA="100"
$ declare -p LANG # LANG 변수가 export 되어 있니?
declare -x LANG="en.UTF-8" # 출력에 'x'가 있으면 이 변수는 export 되어 있음
$ declapre -p AA # AA 변수가 export 되어 있니?
declare -- AA="100" # 출력에 'x'가 없으면 이 변수는 export 된 것 아님
eval
Command Substitution(명령 치환)
VAR=$( <COMMANDS> )
VAR=`<COMMANDS>`
eval
이다.