node.js
사용자 정의 위치에 설치 하고 해당 위치를 $PATH
파일 에 추가했습니다 .profile
.
$ node --version
v0.6.2
$ which node
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:~/Unix/homebrew/bin
$ cat ~/.profile
export PATH="$PATH:~/Unix/homebrew/bin"
Node.js 자체는 잘 작동합니다. 문제는 which
명령을 통해 나열되지 않는다는 것입니다. 그래서 npm
지금은 설치할 수 없습니다. npm
설치 파일을 찾을 수 없습니다 . 바이너리를 검색 가능 node.js
하게 하려면 어떻게 해야 합니까 ?node
which
답변1
귀하의 회선은 .profile
다음 중 하나여야 합니다.
export PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin
해당 문자가 단어의 첫 번째 문자이고 인용되지 않은 ~
경우에만 홈 디렉토리로 확장됩니다 . 귀하가 작성한 내용은 ~
큰따옴표 사이에 있으므로 확장되지 않습니다. 이라고 써도 쉘 단어의 시작 부분이 아니기 때문에 확장되지 않습니다 export "PATH=$PATH:"~/Unix/homebrew/bin
.~
PATH
유사한 변수에 값을 쓰 도록 설계된 특별한 종류의 할당이 있습니다 . ~
할당을 표시하는 등호 바로 뒤에 있거나 할당 오른쪽의 a 바로 뒤에 ~
있으면 확장됩니다. :
단순한 할당에만 이런 종류의 할당이 있으며 export PATH=…
이는 계산되지 않습니다( 문자가 포함된 매개변수 export
가 있는 내장 함수에 대한 호출 입니다 =
).
PATH
여기서는 이미 내보냈기 때문에 내보낼 필요가 없습니다 . 변수 값을 변경할 때 이를 호출할 필요가 없습니다 export
(OSX 또는 Linux에 없는 이전 Bourne 쉘 제외). 또한 과제(역시 export
계산하지 않음)에서는 오른쪽에 큰따옴표가 필요하지 않으므로 공백을 포함 PATH=$PATH:~/Unix/homebrew/bin
해도 $PATH
안전합니다 .
답변2
~
아직 확장되지 않았기 때문에 이런 현상이 발생합니다 . 귀하의 쉘은 이를 처리하는 방법을 알고 있지만 which
그렇지 않습니다(대부분의 다른 프로그램도 마찬가지입니다). 대신 다음을 수행하세요.
export "PATH+=:$HOME/Unix/homebrew/bin"
또는 which
사용을 중지하고 .(거의 항상 우수함)을 사용하십시오 type -p
.
문제의 데모는 다음과 같습니다.
$ echo "$PATH"
/usr/local/bin:/usr/bin:/bin
$ export "PATH+=:~/git/yturl"
$ yturl
Usage: yturl id [itag ...]
$ which yturl
$ type -p yturl
/home/chris/git/yturl/yturl
$ export "PATH=/usr/local/bin:/usr/bin:/bin:$HOME/git/yturl"
$ which yturl
/home/chris/git/yturl/yturl
$PATH
일부 다른 시청 프로그램은 이것이 무엇을 의미하는지 이해하지 못하고 ~
이를 상대 경로의 일부로 취급할 수도 있다는 점을 명심하세요 . 더 휴대하기 편리합니다 $HOME
.