我的目标
我正在尝试将“/opt/bin”添加到 eshell 用于查找脚本的路径列表中。到目前为止,我已经尝试通过三种方式做到这一点
迄今为止的尝试
1) (setenv "PATH" (concat "/opt/bin:" (getenv "PATH")))
2) (eshell/addpath "/opt/bin:")
3) (添加到列表 'exec-path "/opt/bin")
第一次尝试确实将“/opt/bin”添加到 eshell 的路径中(它在下面调用“which lein”的输出中显示为“/opt/bin:”的第一个实例)
第二次尝试还将“/opt/bin”添加到 eshell 的路径(它在下面调用“which lein”的输出中显示为“/opt/bin:”的第二个实例)
实际上,我已经将“/opt/bin”添加到我的 exec-path 有一段时间了。我相信我这样做是为了 /opt/bin 在运行 term 命令以启动 shell 时会出现在我的路径上,这似乎工作正常,但无助于 eshell 在那里找到命令。
失败的尝试和临时解决方法
您可以在下面的 eshell 输出中看到,即使命令 lein 在 eshell 识别 eshell 找不到该命令的路径上可用。但是,如果我从 eshells 默认路径中的目录创建符号链接到 /opt/bin 中的脚本,那么 eshell 就可以找到它。
外壳输出
~ $ which lein
which: no lein in (/opt/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/opt/bin:)
~ $ l /opt/bin/ | grep lein
-rwxr-xr-x 1 kevin kevin 12538 2019-01-17 07:32 lein
~ $ sudo ln -s /opt/bin/lein /usr/local/bin/lein
[sudo] password for kevin:
~ $
~ $ which lein
/usr/local/bin/lein
我宁愿不必在 /usr/local/bin/ 中创建符号链接,以便 eshell 可以在我的 /opt/bin 中找到脚本。请注意,即使在重新启动 emacs 后,它也会在 /opt/bin 中找到符号链接而不是脚本。这发生在 linux mint debian (v9.3) 版本上的 emacs-25 的 GUI 实例中。
问题:
如何让 eshell 实际检查 eshell 路径而不是一些默认的目录列表?我应该更新不同的路径变量吗?