我有一个没有 root 权限的 Linux 盒子,里面有一个相当旧的 emacs,所以我下载了最新版本并构建如下:
- 下载到
$HOME/SRC
$HOME/BLD
配置并内置--prefix=$HOME
make
和make install
因此,这会bin
在我的主目录中创建一个文件夹,这正是我所期望的。
现在,当我直接从终端输入 emacs 时,它仍然打开旧的(如预期的那样)。所以,我必须这么做~/bin/emacs
。我将其添加alias emacs=$HOME/bin/emacs
到我的.bash_profile
作品中。但我也可以添加~/bin
到$PATH
.不过,不太确定推荐哪一个。两个版本的 emacs 是否可以在没有任何冲突的情况下工作,例如~/.emacs
每次打开不同版本时都共享和覆盖。
如果我遵循的步骤是正确的,那么在旧版本已经存在的情况下,这是在没有 root 访问权限的情况下安装新应用程序的最佳方法。
答案1
调整你的PATH
.它简化了执行,按预期工作,一旦您安装了更多带有$HOME
as 前缀的应用程序,它们都会按预期工作。我会在我的 RC 文件中做这样的事情:
PATH=$HOME/bin:$PATH
LD_RUN_PATH=$HOME/lib:$LD_RUN_PATH
export PATH LD_RUN_PATH
设置LD_RUN_PATH
应该允许本地安装的 DSO 也能工作。
到目前为止,您安装 emacs 的方式与在多用户环境中安装的方式基本相同。
说明:Unix(以及使用它们的其他软件,从 DOS 到 TeX)中的路径就像位置列表一样,从左到右搜索。在 Unix 上,我们使用冒号 ( :
) 来分隔条目。如果您有一个PATH
like /usr/local/bin:/bin:/usr/bin
,并且您正在寻找一个名为 的程序foo
,则会按顺序搜索这些路径:
/usr/local/bin/foo
/bin/foo
/usr/bin/foo
使用第一个找到的。因此,根据您插入目录的具体位置,您可以使安装的二进制文件“覆盖”其他二进制文件。从概念上讲,传统上的顺序PATH
是特定到通用或本地到全局。 (当然,我们经常添加奇怪的路径来支持独立的第三方应用程序,这可以打破这个类比)