Eon*_*nil 12 path profile home which
我已安装node.js
在自定义位置并将该位置添加到$PATH
in.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"
Run Code Online (Sandbox Code Playgroud)
Node.js 本身运行良好。问题是它没有按which
命令列出。所以我npm
现在无法安装。因为npm
安装找不到node.js
. 我怎样才能使node
发现的二进制文件which
?
Gil*_*il' 19
你的那一行.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
Run Code Online (Sandbox Code Playgroud)
该~
字符仅在它是单词的第一个字符且未加引号时才会扩展到您的主目录。在您所写的内容中, the~
位于双引号之间,因此未扩展。即使你写了export "PATH=$PATH:"~/Unix/homebrew/bin
,~
也不会被扩展,因为它不在 shell 词的开头。
有一个特殊的分配,旨在为PATH
类似变量写入值。如果~
紧跟在标记赋值的等号之后,或者如果紧跟在赋值右侧的~
a 之后:
,则它被扩展。只有普通赋值才有这种分配,export PATH=…
不算在内(这是对export
内置函数的调用,它恰好有一个包含=
字符的参数)。
在这里,您不需要导出,PATH
因为它已经导出。更export
改变量值时不需要调用(除了在 OSX 或 Linux 上找不到的旧 Bourne shell 中)。此外,在赋值中(同样,export
不算数),右侧不需要双引号,因此PATH=$PATH:~/Unix/homebrew/bin
即使$PATH
包含空格也是安全的。
Chr*_*own 11
这是因为~
尚未扩展。您的 shell 知道如何处理这个问题,但which
不知道(大多数其他程序也不知道)。相反,请执行以下操作:
export "PATH+=:$HOME/Unix/homebrew/bin"
Run Code Online (Sandbox Code Playgroud)
或者,停止使用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
Run Code Online (Sandbox Code Playgroud)
请记住,其他一些查看的程序$PATH
可能无法理解其中~
任何一个的含义,并将其作为相对路径的一部分。使用起来更便携$HOME
。
归档时间: |
|
查看次数: |
29113 次 |
最近记录: |