
_로 만들 수 있다.
export: for child-processbash -c "CMD") 에서 사용하려면 export 해야한다.export를 붙이지 않으면 지역 변수라, 해당 쉘만 사용할 수 있다.
변수 AA는 export AA 해야 child process 에서 사용할 수 있다.1-1. 해결 방법
부모 프로세스에서 export 해야 child process 에서 사용 가능
export AA

export [option]export VARexport VARIABLE$ export 변수명
$ declare -x 변수 명
==== Parent shell ===
AA=100
export AA
or
declare -x AA
export -f FUNCexport -f FUNCTION_NAME
export -n VAR: 취소$ export -n 변수명
export -n VARunset -v VARdeclare -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
setset: 모든 변수와 함수 출력$ set
set VAR: 로컬변수set VAR=VALUE
set 명령set 명령의 값은 SHELLOPTS 변수에 있다.#!/bin/bash
set test="testing"
set의 scope| 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으로 출력함
local 을 사용하지 않고 그냥 WORKING_DIR을 사용하면, 각 함수 내에서 선언한 변수라도 서로 영향을 준다.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_namedeclare -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 된 것 아님
evalCommand Substitution(명령 치환)
VAR=$( <COMMANDS> )
VAR=`<COMMANDS>`
eval이다.