globally executable nodejs scripts

globally executable nodejs scripts

PATH

PATH 환경 변수는 Unix-like 운영 체제에서 매우 중요한 역할을 합니다. PATH는 실행 파일을 검색할 디렉토리 목록을 정의합니다. 터미널에 명령어를 입력하면, 시스템은 PATH에 나열된 디렉토리에서 해당 실행 파일을 찾습니다.

PATH 환경 변수를 확인하려면 다음 명령어를 사용합니다:

echo $PATH

이 명령어를 실행하면 다음과 같은 출력이 나올 수 있습니다:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

각 디렉토리는 콜론(:)으로 구분됩니다. 이 목록에 있는 디렉토리에 실행 파일을 배치하면, 해당 파일을 어디서든지 실행할 수 있게 됩니다.

#!/usr/bin/env node

#!/usr/bin/env node는 쉐방(shebang) 라인으로, 스크립트를 실행할 인터프리터를 지정합니다. 이 방법은 더 유연하고 이식성이 높습니다. 다음은 각 부분에 대한 설명입니다:

  • #!: 쉐방의 시작을 나타냅니다.
  • /usr/bin/env: env 명령어는 지정된 프로그램을 찾고 실행합니다. 이 경우, node 인터프리터를 찾습니다.
  • node: 스크립트를 실행할 Node.js 인터프리터를 지정합니다.

env 명령어를 사용하면 시스템 PATH에서 인터프리터를 검색하기 때문에, Node.js가 표준 위치가 아닌 다른 위치에 설치되어 있어도 스크립트를 실행할 수 있습니다.

스크립트 작성, 실행

#!/usr/bin/env node

// entries.mjs

import fs from "fs/promises";

const currentDir = process.cwd();

// how to get arguemtns from the command line
const arg = process.argv[2];
if (!arg) {
  console.log("Usage: stats <directory>");
  process.exit(1);
}

const targetDir = currentDir + "/" + arg;
const entries = await fs.readdir(targetDir);

console.log("entries: ", entries);

터미널을 열어 아무 디렉토리에서 다음 커맨드를 입력

entries.mjs .