1

글타래: Mac OS X의 bash에 관해서

bash on Mac OS X

by David Miller
02/24/2004

가져온 글: http://www.macdevcenter.com/pub/a/mac/2 … /bash.html

만약 여러분이 제목을 보시고 이 글에 관심을 가지시게 되셨다면, 그 것은 아마도 OS X의 터미널에 익숙하시거나 혹은 메뉴나 아이콘들을 클릭하기 보다는 명령어들을 직접 입력해서 작업하는 것을 더 편안하게 느끼실 수도 있기 때문일 겁니다.
만약 그렇지 않다면, Chris Stone씨가 쓴 "Learning the Mac OS X Terminal"과 "Learning the Terminal in Jaguar"라는 제목의 글을 읽으시면 많은 참고가 되실 겁니다.

Jaquar에서 Panther로 옮겨 오면서, Mac OS X의 기본 shell이 tcsh에서 bash로 바뀌었음을 다른 글들에서 종종 언급된 것을 보셨을 겁니다. 만약 Jaquar에서 Panther로 업그레이드를 하셨다면, 처음 Panther로 로그 인을 했을 때는 기존의 설정들이 그대로 보존된 상태이기 때문에 계속 tcsh를 사용하게 되며, 새로운 계정을 생성했을 경우에만 기본적으로 bash를 사용되게 됩니다. 대부분의 일반 터미널 사용자들은 일상적인 사용 환경이 전과 비슷하기 때문에 바뀐 점을 아마 전혀 눈치채시질 못 할 겁니다:

  • cd 명령은 여전히 다른 디렉토리로 이동할 때 쓰이며,

  • ls 명령도 여전히 디렉토리의 내용을 보여줄 것 이며,

  • rm 명령 또한 여전히 파일들을 지울 때 사용됩니다.

  • 그리고 화살표 키를 사용해서 전에 입력했던 명령들에 대한 과거 기록들을 동일하게 확인하실 수도 있습니다.

하지만 bash를 사용하시면서 aliases, 환경 변수, 혹은 이전 tcsh에서 사용했던 여러가지 주요 사용환경들이 바뀌었거나 비슷하게 적용되지 않음을 알게 되실 겁니다. 그래서, 이 글이 Jaguar에서 tcsh를 사용하셨던 분들이 Panther의 bash로 전환하는 데 도움이 되었으면 합니다.


Unix 개론: Shell이란 무엇인가?

이쯤 와서 여러분은 아마도 shell이란 바로 컴퓨터의 가장 깊고도 어두우며, 아주 으슥한 곳에 숨어있는 커다란 털복숭이 괴물과 여러분 사이를 연결해 주는 것 정도로 알고 계실 겁니다. 이 커널(kernel)이라고 알려진 괴물은 우연치 않게 컴퓨터 먹이 사슬의 가장 꼭대기에 있어서, 각각의 작업들에 사용되는 자원들(메로리, 프로세서, 그리고 디스크)을 관리하면서 모든 것들이 원래대로 올바로 수행될 수 있도록 지원합니다.

그래서 만약 커널이 제대로 동작을 안하게 된다면 어떤 일들이 일어날 지는 상상하실 수 있으실 겁니다: 프로그램들이 갑작스레 죽기 시작하고, 두렵고 지긋지긋한 바람개비가 돌기 시작하며, 컴퓨터가 서서히 이상한 징후들을 나타내기 시작할 겁니다. 여러분은 아마도 이러한 상황을 이전에도 마추치신 경험이 있을 것이며, 모르시는 분들도 계시겠지만, Windows 사용자들에게는 아주 친숙한 그 "죽음의 퍼런 화면"과도 비슷한 커널 패닉을 Mac OS X 태생 이전의 다양한 시스템들을 사용해본 분들이라면 여기저기서 가끔식 맞닥뜨린 경험도 있으실 겁니다.

이쯤에서는 이미 알고 계시겠지만, 이 괴물을 통제하는 수단인 shell은 그 종류가 여럿이 있습니다. 어떤 것들은 대략 40 여년 전 Unix시절에 만들어진 것들도 있으며, 이 것들 모두는 같은 일은 하지만, 제공되는 기능들이나 지원하는 용법들을 보면 각각의 고유한 특징들을 가지고 있습니다.


간략한 Shell의 역사

맨 처음의 shell(sh)은 개발자 Stephen Bourne의 이름을 따서 명명된 Bourne Shell로 AT&T Bell Labs에서 개발된 첫 Unix 운영 시스템에 함께 내장되어 있었습니다. 이후에, 만들어진 모든 shell들은 처음 개발된 Bourne Shell을 기초로 하게 되었습니다.

모태의 이름에서 비롯된 Bourne Again Shell(bash)은 Bourne Shell과는 완전하게 호환되며 작업 제어, command-line 편집, 그리고 개선된 scripting 지원 등과 같은 추가 기능들로 인해, Bourne Shell의 공식적인 후임의 shell로 여겨저 오고 있습니다. Free Software Foundation에 의해 개발되고 관리되어온 bash 소스는 무료로 사용 가능하며, 어떠한 Unix 호환 시스템에서도 쉽게 컴파일 될 수가 있습니다.

그래서 만약 여러분이 Linux*BSD 환경에서 Konsole 혹은 Gnome Terminal을 열게 되신다면 곧바로 bash가 여러분의 명령을 받기 위해 대기하고 있을 겁니다.


나는 차이점을 모르겠는데, 댁은 차이점을 말해줄 수 있겠소?

Aqua, KDE, 그리고 Gnome과 같은 창 구현(Windowing) 시스템들은 사용자의 명령을 컴퓨터의 하부 시스템에 전달하기 위해 공통적으로 메뉴, 아이콘, 창 그리고 커서 등을 사용합니다. 하지만 각각의 것 들을 서로 비교해 보면 단지 피상적인 것 말고도 (더 좋던 혹은 더 나쁘던) 각기 고유의 특징들을 가지고 있습니다. 예를 들어, Aqua의 쉬트(sheet - 예를 들어, 도큐멘트를 저장할 때 밑으로 내려오는 창과 같은)는 웹 브라우저나 워드 프로세서와 같은 다중 도큐멘트 어플리케이션에서 대화 상자(dialog box)의 기능을 구현하는데 있어서 해당 도큐멘트의 대화 상자가 열려 있어도 다른 창의 도큐멘트를 계속 사용할 수 있게 하는 수단을 제공하고 있습니다.

마찬가지로, shell들도 같은 기능을 수행함에 있어서도 서로를 구별짓게 하는 각자 고유의 특징들을 가지고 있습니다. 여기서의 같은 기능이란 바로 여러분의 명령을 컴퓨터 속 커다란 털복숭이 괴물에게 전달해서, 그 결과를 다시 여러분에게 보고하는 일이 주일 겁니다. 이런 이유로 ~/.tcshrc에 저장되어 있는 대부분의 명령들을 bash 안에서 실행시키면 실패되고 마는 것은 바로, bash가 상응하는 대부분의 명령들을 다른 용법으로 사용하기 때문입니다.


없는 것 빼고 다 있다

Panther는 운영 시스템 속의 여러 Unix 구성 파일들과 함께, 다섯 가지의 shell들을 대부분의 다른 실행 파일들처럼 Mac OS X의 /bin 폴더에 설치 저장합니다:

http://www.macdevcenter.com/mac/2004/02/24/graphics/bin.jpg
그림 1: Panther에 포함된 shell들은 sh, bash, csh, tcsh, zsh가 있습니다.

파일들의 크기로만 살펴본다면, bash와 sh 그리고 tcsh와 csh는 실제적으로 똑 같게 보입니다만, tcsh가 csh와 호환되는 것 처럼 bash도 sh와 완전한 호환성을 가지고 있으며, 이것은 앞에서 논의되었던 서로 다른 shell들의 등장에서 서로가 맞물려 있음을 짐작하게 합니다.

한 가지 알아두셔야 할 것은 위에 나열되어 있는 shell들만을 사용할 수 있는 것은 아니라는 점입니다. Korn shell(ksh)처럼 몇몇 기타 shell들은 내려받아서 Mac OS X (혹은 기타 다른 Unix 시스템)에서 바로 컴파일 하실 수도 있습니다. 하지만, 대부분의 Panther 사용자들은 기본적으로 제공되는 shell들만으로도 충분하고, 만약 원하는 shell이 포함되어 있지 않다고 생각하시는 분은, 이미 설치 파일을 받아서 컴파일 하셨으리라 믿습니다.


bash로 이사 가기

Mac OS X에는 로그 인 시의 기본적으로 사용되는 shell을 바꾸는 방법으로 몇 가지가 있습니다. OS X는 Unix 워크스테이션과 친숙한 일반 컴퓨터를 위한 운영 시스템이라는 서로를 달리하는 성격을 모두 가지고 있다는 점을 생각해 보면, 기본 shell을 바꾸는 것이 shell 자체 내에서 수행될 수도 있고, 또 다른 방법으로 마우스 하나 만 가지고도 가능하다는 것은 그리 놀랄 만한 일이 아닐 겁니다.

- 마우스를 가지고 전환

이상하게 들릴지도 모르겠지만, shell이란 무엇인지를 전혀 모르고 있어도 기본 로그인 shell을 다른 것으로 바꿀 수는 있습니다. 이것이 좋은 것 인지 나쁜 것 인지는 저도 장담을 못 하겠지만, 그냥 터미널의 환경설정 창을 열고 "다음 명령 실행(Execute this command)" 항목을 선택 후, 글 입력 란에 아래 처럼 shell의 절대 경로를 입력하시면 됩니다.

http://www.macdevcenter.com/mac/2004/02/24/graphics/preferences.jpg
그림 2: bash로 전환하기 위해 터미널의 환경설정 창 사용.

그리고 나서 터미널을 종료하고, 다시 켜면 새로 설정했던 효과가 적용됩니다.

- Shell에서 전환

위에 설명된 기본 shell을 바꾸는 법은 Apple에서 제공한 또 하나의 편의 수단입니다. 하지만, Mac OS X의 내제된 Unix에 적용되는 여러 설정 사항들처럼, 이것은 단지 터미널에서 실행될 수 있는 Unix 명령이 그래픽 인터페이스로 표현된 것 뿐입니다.

창과 마우스가 존재하지 않던 시절에는, 어쩌면 끔직하게 들리실지도 모겠지만, 모든 작업들은 명령어 입력(command-line)을 통해 이루어 졌었답니다. 대부분의 Unix 시스템들에서는, shell을 bash로 바꾸기 위해서는 chsh bash 명령을 사용합니다. 하지만, Apple은 OS X의 chsh 명령을 약간 수정해 놓아서 현재는 같은 작업을 수행하려면 chsh -s bash 명령을 사용해야 합니다.

http://www.macdevcenter.com/mac/2004/02/24/graphics/chsh.jpg
그림 3: shell 전환의 결과(성공적인 전환과 존재하지 않는 shell로의 전환 시도로 인한 실패를 같이 보여줌).

다시 한번, 터미널을 껐다 켜서 제대로 전환이 되었는 지 확인하십시오.


bash에서 작업하기

이제, 전에 사용하시던 shell을 bash로 바꾸셨거나 혹은 Panther에 의해 자동으로 설정된 상태라면, bash에서 작업하실 수 있게 되었습니다. 다시 한 번 확인을 위해서, 터미널에 echo $SHELL 명령을 입력하시면 결과(/bin/bash)를 보실 수 있습니다.

bash가 가지고 있는 크기와 복잡성 때문에, 여기서 모든 기능들을 다 다루어 볼 수는 없습니다. 대신, tcsh에서 bash로 전환하신 분들이 종종 범하시기 쉬운 일반적 실수들에 중점을 두어 살펴보겠습니다. 자, 이제 시작합니다.

- 사용 환경 길들이기

매번 컴퓨터로 로그 인 할 때마다, bash는 기타 다른 shell들 처럼 사용 환경을 구현하기 위해 초기화 파일들을 찾게 됩니다. 그래서, 로그 인 할 때마다 매번 같은 명령들을 일일이 실행하는 대신, 이런 명령들을 초기화 파일에 담아 두면 bash가 이런 단조로운 작업들을 대신 처리하게 할 수 있습니다. bash가 이런 파일들을 찾는 위치는 각각의 고유 사용 목적에 따라 아래처럼 달라집니다.

/etc/profile - bash와 sh shell의 시스템 전반에 관련된 설정 파일.
~/.profile - 새로운 터미널 창을 열 때처럼, 새로운 shell이 생성될 때 실행됨.
~/.bash_logout - shell에서 로그 아웃 할 때 실행됨.

그래서, 매번 여러분이 터미널을 열 때마다 실행되어야 할 명령들은 ~/.profile(만약 이 위치에 없다면 새로 만드셔야 합니다)에 위치한 설정 파일에 저장되어야 합니다. 그리고, 만약 명령들이 컴퓨터에 있는 모든 계정의 bash 사용자들에게 적용되게 하시려면 대신 /etc/profile 파일에 저장하십시오.

아래는 초기화 파일에 있는 내용의 한 예입니다:

# shell variables
PS1="\n$PS1 "
PS2=": "

# environment variables
export CVSROOT=/usr/local/cvsroot
export CVS_RSH=/usr/bin/ssh
export JAVA_HOME=/Library/Java/Home
export ANT_HOME=/usr/local/ant
export CLASSPATH=/Users/dave/FVL/xerces.jar

# the path is initially set to "/bin:/sbin:/usr/bin:/usr/sbin"
export PATH=$PATH:/usr/local/bin:/usr/local/mysql/bin

# aliases
alias l="ls -l"
alias ll="ls -al"
alias mckoi="java com.mckoi.runtime.McKoiDBMain"

만약 이전에 tcsh에서 shell 변수들이나 aliases 등과 작업하신 경험이 있으시다면, 위에 보이는 명령들은 무척이나 친숙하게 보이실 겁니다. 매번 설정 파일을 변경할 때마다 최근에 변경한 사항들을 적용되게 하기 위해서는 항상 "새롭게 인식시키는" 작업이 필요합니다.(웹 브라우저가 가장 최신의 웹 페이지 정보를 가져오게 하기 위해 "새로 고침" 버튼을 누르는 것과 비슷하게 생각할 수 있습니다) 이 작업은 source filename 명령을 이용하면 되고, 로그 아웃 스크립트의 경우에는 source ~/.bash_logout 명령을 사용하시면 됩니다.

- Shell에서의 변수 쓰임새

프로그래밍 언어에서 사용되는 변수의 기능을 살펴보면 프로그램의 실행 중, 어떤 정해진 시점에서 숫자나 글, 혹은 날짜와 같은 정보를 나중에 다시 꺼내서 사용하기 위한 임시 저장 공간으로 쓰입니다. 이것을 shell에 적용해 보면 (실제로 shell은 프로그래밍 언어이기도 합니다) 변수에는 사용중인 디렉토리나, 터미널 창에 표시될 문장, 혹은 사용할 도구나 프로그램들이 사용하게 될 여러 종류의 정보들을 담아 둘 수 있습니다. bash에서는 두 가지 유형의 변수들을 가지고 있는 데, "일반" 변수와 환경 변수(environment variables)가 있습니다.

- 일반 변수

일반 변수는 통상적으로 자주 사용되는 정보를 담는데 사용됩니다. C나 Java에서와는 달리 shell에서 사용되는 변수들은 유형의 제약을 덜 받기 때문에, 거이 아무것이나(예를 들어, 숫자, 문장, array나 hash 같은 합성 값) 담아둘 수 있습니다. 새로운 변수를 만드는 것은 비교적 간단합니다: name=value와 같은 형식을 사용해서 생성하고 나중에 다시 불러올 때는 $name 형식을 사용하면 됩니다.

그래서, 만약 새로운 터미널 창을 열 때마다 현재의 날짜를 보고 싶으시면, 다음과 같은 줄을 초기화 파일에 추가해 주시면 됩니다:

mydate=`date "+%H:%M:%S %m/%d/%y"`
echo "반갑습니다! $USER님, 현재 시간은 $mydate입니다"

shell 스크립팅에 대한 더 자세한 정보는 처음에 소개된 Chris Stone씨의 글을 참고하시기 바랍니다.

- 환경 변수

환경 변수는 shell 변수들 중에서도 본질적으로 특별한 경우입니다. 이것은 shell로부터 실행되는 모든 하위 처리 작업들에게도 적용이 됩니다. 쉽게 말하면, shell 안에서 실행되는 모든 어플리케이션들과 스크립트들이 shell의 환경 변수 값을 읽고 사용할 수 있다는 뜻입니다. 이런 결과로, 명령어 입력(command-line) 프로그램들에서는 일반적으로 환경 변수들을 설정과 관련된 작업에 사용합니다.

사용 관례를 따르면, 환경 변수의 이름은 모두 대문자를 사용합니다. OS X에서 사용되는 환경 변수들로는 다음과 같은 것들이 있습니다:
PATH - shell의 실행 파일들이 저장되어 있는 콜론으로 분류된 디렉토리들의 목록: /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
CLASSPATH - Java Runtime Environment을 사용하는 JAR 파일들과 Java class 파일들이 저장되어 있는 콜론으로 분류된 디렉토리들의 목록: /Users/dave/FVL/Java/xerces.jar:/Users/dave/FVL/mckoi.jar
JAVA_HOME - Java가 설치되어 있는 기본 디렉토리: /Library/Java/Home
PWD - 파일 시스템의 현재 디렉토리: /Applications
USER - 로그 인 이름: dave

shell에 현재 지정되어 있는 환경 변수들을 확인해 보기 위해서는, env 명령을 사용하게 되면 아래의 그림처럼 모든 환경 변수들을 터미널에 표시해 줍니다.

http://www.macdevcenter.com/mac/2004/02/24/graphics/env.jpg
그림 4: 저자의 shell에 지정되어 있는 모든 환경 변수들의 예.

새로운 환경 변수를 만드는 방법은 아주 쉽습니다. bash에서는 export VAR_NAME=value 형식의 문법을 사용합니다. 그래서 모든 shell 변수들은 export 명령과 함께 사용되면 환경 변수로 정의될 수 있습니다:

# JAVA_HOME 환경 변수 생성
export JAVA_HOME=/Library/Java/Home

#두 개의 줄을 사용해서 명시적으로 같은 효과를 나타낼 수도 있습니다
JAVA_HOME=/Library/Java/Home
export JAVA_HOME

그렇다면, 만약에 필요한 환경 변수가 존재하지 않는다면 어떻게 될까요? 결론적으로, 커널 패닉이 일어나거나 컴퓨터가 연기를 뿜어낸다는 등의 별로 놀랄만 한 일들은 발생하지 않습니다. 물론 shell이나 관련 도구들은 어떤 특정의 정의되어진 변수들을 필요로 할 수도 있겠지만, 어떤 도구들은 그들 만의 환경 변수를 사용할 수도 있습니다. 그래서, 만약 필요한 변수가 존재하지 않는다면, 관련 프로그램은 안전하게 그냥 작업을 중단할 것이며 어떤 변수가 필요한 지를 Apachefop 형식으로 표시해 줄 겁니다.

http://www.macdevcenter.com/mac/2004/02/24/graphics/fop.jpg
그림 5: 필요한 환경 변수가 없을 때의 대표적인 결과의 예.

아래의 표에서는 OS X의 tcsh와 bash 간의 작업하면서 서로 구별되는 변수들(shell 그리고 환경 변수들 모두)을 보여줍니다.
모든 shell 변수 표시 - tcsh: set, bash: set
shell 변수 생성 - tcsh: set name=value, bash: name=value
shell 변수 삭제 - tcsh: unset name, bash: unset name
모든 환경 변수 나열 - tcsh: env, bash: env
환경 변수 생성 - tcsh: setenv name value, bash: export name=value
환경 변수 삭제 - tcsh: unsetenv name, bash: unset name

- Aliases

Aliases는 지금까지 오랫 동안 Mac OS의 일부분으로서 사용되어 왔습니다. 하지만, 전통적으로 두 가지의 서로 다른 뿌리(Unix와 Mac OS)에서 이어져 온 것이기 때문에 Mac OS X에 와서는 용어상으로 상당히 혼란스런 상황을 맞이하게 되었습니다.

  • Finder에서는, 가상본(alias)은 하드 드라이브의 다릇 곳에 위치하는 파일에 쉽게 접근할 수 있도록 하는 기능으로 사용되며, 여러 곳에서 같은 하나의 파일에 접근할 수 있도록 합니다.

  • shell에서의 alias도 비슷한 목적으로 사용되지만, 오직 글자만 사용되는 환경에 존재하는 이유로, 그 용법은 조금 다릅니다 (Finder의 가상본에 해당하는 것은 대신 link가 사용됩니다); shell의 alias는 거이 모든 Unix 명령을 또 다른 이름의 것으로 대치할 수 있게 해서, 원래의 명령을 새로운 이름으로 대신 불러서 사용할 수 있게 합니다.

Alias는 변수들과 비슷한 방법으로 선언문 앞에 alias 단어를 붙여서 선언합니다: alias name=command. 만약 명령에 공간도 포함된다면, 따옴표 안으로 같이 싸주셔야 됩니다. 현재 어떤 alias들이 정의되어 있는 지를 확인하시려면, 간단하게 alias를 입력하시면 됩니다 (그리고 alias를 삭제하려 할 때는, unalias name 명령을 사용합니다):

alias l="ls -l"
alias ll="ls -al"
alias ~="cd ~"
alias md=mkdir
alias mckoi="java com.mckoi.runtime.McKoiDBMain "

# md 이름의 alias 삭제 (사용 본보기)
unalias md

아래의 그림은 위에서 만든 처음 두 개의 alias를 사용한 예를 보여줍니다:

http://www.macdevcenter.com/mac/2004/02/24/graphics/l.jpg
그림 6: 간단한 alias들 만으로도 키보드에서 입력하는 시간을 간편하게 절약해 줄 수 있다는 것을 보여줍니다.

- 터미널 화면의 명령 대기 메시지(Prompt) 설정하기

터미널을 열면 그 날의 메시지가 표시되고 나서, 가장 처름 보게 되는 것은 여러분의 모든 소원을 들어주기 위해 대기하고 있는 명령 대기 메시지입니다. 만약 Jaguar의 tcsh 명령 대기 메시지를 보아 오셨던 분이라면, 아래의 그림처럼 표시되는 Panther의 기본 명령 대기 메시지를 보고는 실망을 하셨을 겁니다:

http://www.macdevcenter.com/mac/2004/02/24/graphics/defaultPrompt.jpg
그림 7: Panther에 있는 bash의 기본 명령 대기 메시지.

하지만 tcsh에서처럼, bash의 명령 대기 메시지를 바꾸는 일은 두 개의 특별한 shell 변수인, PS1 그리고 PS2의 값을 설정하는 것으로 해결됩니다. 여기서 왜 꼭 두 개일까요? -- PS1는 기본 명령 대기 메시지로, 매번 새로운 명령어가 입력될 때마다 표시되지만, PS2는 제 2의 명령 대기 메시지로, 명령어 길이가 한 줄 이상이라서 다음 줄로 줄바꿈 할 때마다 표시됩니다:

http://www.macdevcenter.com/mac/2004/02/24/graphics/ps1ps2.jpg
그림 8: bash의 기본 PS1와 PS2 사용의 예.

아래의 표는 명령 대기 메시지에 넣을 수 있는 정보들의 목록입니다.
\a - ASCII bell 글자
\d - 현재 날짜: Sun Feb 08
\H - 호스트 이름(hostname): Ginger.local
\h - 단축 호스트 이름(hostname): Ginger
\u - 사용자 이름: dave
\w - 현재 작업 디렉토리: /Applications/Network
\W - 현재 작업 디렉토리의 기본 이름: Network
\T - 현재 시간 (12-시간 HH:MM:SS 형식): 01:16:49
\t - 현재 시간 (HH:MM:SS 형식): 13:16:49
\@ - 현재 시간 (12-시간 AM/PM 형식): 1:16 PM
\n - 새 줄
\\ - 뒤로 누운 슬래쉬(backslash) 인쇄: \

위에 나열된 정보를 참고해 보면, Panther의 기본 명령 대기 메시지는 다음과 같은 명령을 사용해서 만들어진 것 임을 알 수 있습니다:

PS1="\h:\w \u$ "
PS2="> "

마 무 리

여기서는 tcsh에서 bash로 전환하는데 필요한 과정에 대해서 대략적으로만 설명하였습니다. 여기까지 읽으셨으면 Panther의 기본 환경을 원하시는 것으로 꾸미실 수 있을 만큼 bash에 대해 충분하게 아셨으리라 생각됩니다. 하지만, 여기서는 몇몇 주요 기능들의 표면적인 것들만 다뤘고, 명령의 과거 기록, 작업 관리, 스크립팅 등의 기타 기능들은 언급을 안했습니다. 그래서 기타 필요하신 추가 정보는 아래를 참고하시기 바랍니다:

+ = ²

2

댓글: Mac OS X의 bash에 관해서

혹시 ~/.bashrc, ~/.bash_profile, ~/.profile, /etc/profile, /etc/bash.bashrc 그리고 비슷한 이런 여러 가지 파일의 차이점과 그 사용 용도가 궁금했던 적이 있으셨나요? 아래 잘 설명해 놓은 글이 있군요.

Bash: about .bashrc, .bash_profile, .profile, /etc/profile, etc/bash.bashrc and others

+ = ²