. 점 명령어는 어떤건가요?

우분투 12.04 입니다.

https://trac.ffmpeg.org/wiki/UbuntuCompilationGuide 이걸 보고 ffmpeg 를 컴파일 해보고 있습니다.

설치도중
cd ~/ffmpeg_sources
wget http://www.tortall.net/projects/yasm/re … 2.0.tar.gz
tar xzvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make distclean
[color=#FF4040:2v2ja90h]. ~/.profile[/color:2v2ja90h] 부분이 있는데 이부분이 의미하는게 어떤건지 알려주실수 있나요.?
. 점 명령어?..

점(. 영어로는 dot)은 크게 3가지로 쓰이더군요

  1. 숨김(히든) 파일을 만들때 사용하죠
    .profile 이러면 ls 에서 안보이고 ls -a 옵션을 줘야 보이죠

  2. 쉘의 환경변수를 바꿀 때 사용하더군요
    . ~/.profile 이러면 현재 환경변수를 ~/.profile에 설정된 값으로 변경하는 거죠
    이 때 앞의 . 은 source의 축약된 표시죠

  3. 현재 경로(디렉토리)를 나타내죠
    ./configure 이러면 현재 /home/oseb/Packages/ffmpeg이라고 하면
    /home/oseb/Packages/ffmpeg/configure 라고 하는 걸 줄여서 표시하는 겁니다
    부록으로 … 두 개는 상위 디렉토리를 나타냅니다. 도스에서 dir 하면 보이던게 리눅스에서도 그대롭니다

감사합니다.

. (source) 명령은 스크립트 실행 명령입니다.

스크립트를 실행하는 방법은

  1. bash 스크립트파일명
  2. 스크립트파일명
  3. . 스크립트파일명

이렇게 있는데,
1번의 경우는 명시적으로 스크립트를 실행할 쉘을 지정한 경우입니다.
2번의 경우는 현재의 쉘프로그램에서 스크립트를 실행해줍니다.
그러나 이경우는 스크립트파일에 실행속성이 부여되어 있어야 합니다.
3번의 경우는 현재쉘이 bash(혹은 본쉘 호환쉘)일 경우, 스크립트를 실행해줍니다. 즉 본쉘 호환쉘 내부 명령입니다.

1,2번의 경우는 bash혹은 현재쉘에서 자식프로세스를 만들어 스크립트를 실행합니다.
프로세스는 메모리를 각기 따로 할당하기 때문에, 환경변수등의 메모리 영역이 공유되지 않기 때문에,
export 명령등으로 환경변수를 자식프로세스에 전파해야 자식프로세스가 부모프로세스의 환경변수 값을 가지게 됩니다.

3번의 경우는 자식프로세스를 생성하지 않고, 현재의 쉘(본쉘 호환쉘)에서 직접 명령의 해석해 실행하기에,
환경변수등이 그대로 적용됩니다. 쉘프로세스에서 실행하는 것이라 쉘프로세스의 메모리및 환경변수를 사용하는 것이죠.

종합하자면…
1번의 경우는 명시한 쉘의 자식프로세스에서 실행
2번의 경우는 현재의 쉘의 자식프로세스에서 실행
3번의 경우는 현재의 쉘이 직접실행

참고로, 본쉘은 sh이고, 그냥 스크립트에 실행속성을 부여하여 실행할 경우,
우분투의 경우는 dash가 실행됩니다.
그리고, 본쉘 호환쉘은 bash, ash, dash, ksh(콘쉘)등이 있습니다…

. somefile

현재 위치에 somefile을 복사/붙여넣기 하여 쭉 실행 하시오. 대략 그런 의미 입니다.

source라는 명령어도 같은 역할을 합니다.

쉘 스크립트를 작성할때는 source 명령어를 쓰는 것이 이해 하는데 쉬워서 권장 됩니다.

.(점) 명령어는 실시간으로 쉘을 사용할 때 축약형으로 사용하면 입력이 짧아 간편 합니다.

감사합니다 !