Linux와 커맨드 라인 기초

현재 디렉터리에 있는, 실행 권한이 붙은 스크립트 run.sh를 'run.sh'라고 입력하여 실행하려고 하면 'command not found'가 되고, './run.sh'라고 입력하면 실행할 수 있었다. 이유로 올바른 것은?

  1. Arun.sh에 실행 권한이 붙어 있지 않으며, 앞에 ./를 붙였을 때만은 권한이 없어도 실행할 수 있기 때문에
  2. B슬래시를 포함하지 않는 명령 이름은 환경 변수 PATH의 디렉터리에서만 찾으며, 현재 디렉터리는 일반적으로 포함되지 않기 때문에
  3. Crun.sh 첫 줄의 #!/bin/bash(셔뱅)는 앞에 ./를 붙여 실행했을 때만 읽히기 때문에
정답과 해설 보기

정답: B. 슬래시를 포함하지 않는 명령 이름은 환경 변수 PATH의 디렉터리에서만 찾으며, 현재 디렉터리는 일반적으로 포함되지 않기 때문에

셸(shell)은 슬래시를 포함하지 않는 명령 이름을 받으면, 환경 변수 PATH에 콜론으로 구분되어 나열된 디렉터리(/usr/local/bin:/usr/bin 등)를 순서대로 찾아 실행합니다. 현재 디렉터리는 다른 곳에 놓인 같은 이름의 악의적인 프로그램을 실수로 실행하지 않도록 일반적으로 PATH에 넣지 않습니다. ./run.sh처럼 슬래시를 포함한 경로를 쓰면 PATH를 찾지 않고 그 파일을 직접 실행합니다. 첫 줄의 #!/bin/bash(셔뱅)는 어느 방법으로 시작하든 그 스크립트를 실행할 인터프리터를 지정합니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. 위의 명령을 순서대로 실행했을 때, 두 bash -c의 출력의 조합으로 올바른 것은?
  2. Linux의 패키지 관리 시스템(Debian 계열의 apt, Red Hat 계열의 dnf 등)의 주된 역할로 올바른 것은?
  3. systemd를 사용하는 Linux에서, 서비스 license.service에 대한 'systemctl start license.service'와 'systemctl enable license.service'의 차이로 올바른 것은?
  4. cron에 '30 2 * * 1 /home/alice/backup.sh'를 등록했다. backup.sh가 실행되는 시점으로 올바른 것은?
  5. Linux 서버에서 '디스크 여유 공간이 적다'는 경고가 나왔다. 파일 시스템별 사용량과 여유 용량을 조사하는 명령과, 디렉터리 안의 파일이 사용하는 용량을 합계하여 조사하는 명령의 조합으로 올바른 것은?