여러 환경에서 작동하는 node.js 용 스크립트를 만들려고합니다. 특히 저에게는 OS X와 Ubuntu를 앞뒤로 전환하고 있습니다. 전자에서는 Node가로 설치 node
되지만 후자의 경우에는 nodejs
. 내 스크립트 맨 위에 다음이있을 수 있습니다.
#!/usr/bin/env node
또는
#!/usr/bin/env nodejs
노드가 설치되어있는 한 두 환경 중 하나가 명령을 지정해야하는 대신 스크립트를 실행 파일로 실행하는 것이 좋습니다 ( ./script-name.js
대 node script-name.js
).
백업 해시 뱅을 지정하는 방법이나 node.js에 대해 두 경우 모두 호환되는 해시 뱅을 지정하는 방법이 있습니까?
답변
스크립트가 Node 개발자를위한 것이라면 절대적으로
#!/usr/bin/env node
Node 만 .NET으로 설치 한 사람들과의 호환성을 위해 노력하지 않아도됩니다 nodejs
.
이론적 해석:
- 멋진 아이들이하는 일이고, 당신도 그렇게하지 않으면 당신은 멋지지 않습니다. jshint , karma , bower 및 심지어 npm 과 같은 주요 노드 프로젝트
#!/usr/bin/env node
는 실행 가능한 스크립트의 shebang으로 사용 됩니다. - 시원한 아이가 그 일을하고 있기 때문에, 우분투에 노드와 함께 작동 누구든지를 설정 한
/usr/bin/node
에 심볼릭 링크로nodejs
. 있다 높은 볼 지시 스택 오버플로 여기에이 일에, 그리고 모든 웹을 통해.nodejs-legacy
전체 목적이이 심볼릭 링크를 만드는 것이 목적인 패키지 도있었습니다 . 노드를 사용하는 사람들은 우분투에이 문제를 해결하는 방법을 알고, 그들은 해야 그들이 거의 어느 노드에 기록 된 소프트웨어를 사용하려는 경우. - 문제는 우분투 14.04에서 더 이상 존재하지 않는 것 같습니다. 방금 Node를 제거하고을 실행 했으며에 대한 심볼릭 링크로
apt-get install nodejs
생성/usr/bin/node
되었습니다/etc/alternatives/node
. 이 문제로 고통받는 사람들은 줄어들고있는 소수 인 것 같습니다.
노드 문맹 사용자를 대상으로하는 경우에도를 사용할 #!/usr/bin/env node
수 있습니다. 필요할 경우 수동 심볼릭 링크 생성 또는 nodejs-legacy
패키지 설치에 대한 가능한 필요성을 설치 문서에 추가 할 수 있습니다. 사용 가능 nodejs
하지 않은 사람 node
이 위의 shebang으로 프로그램을 실행하려고하면 다음과 같은 내용이 표시됩니다.
/ usr / bin / env : node : 해당 파일 또는 디렉토리 없음
그리고 인터넷 검색 은 첫 번째 결과와 첫 페이지에서 여러 번 수정을 제공합니다.
nodejs
사용 가능하지만 사용할 수 node
없는 시스템 (또는 node
실제로 아마추어 패킷 라디오 노드 프로그램 이있는 곳 ) 에서 사용자가 소프트웨어를 실행할 수 있도록 진정으로 필사적으로 확인하려는 경우이 “2 줄 셔뱅”을 사용할 수 있습니다. 에서 유닉스 및 리눅스 스택 교환 :
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
하지만 Node 세계의 다른 사람이 거의 없을 때 이것을 정말로해야합니까?