标签: path

通过 Makefile 将目录添加到 PATH

我在将我在 Makefile 中修改的 PATH 导出到当前终端时遇到了一些麻烦。我正在尝试添加到 PATH,即 Makefile 目录所在的 bin 文件夹。

这是 makefile 的相关片段:

PATH := $(shell pwd)/bin:$(PATH)

install:
    mkdir -p ./bin 
    export PATH
    echo $(PATH)
Run Code Online (Sandbox Code Playgroud)

echo 打印正确,但如果我在终端中重做 echo,PATH 保持不变。

make path environment-variables

10
推荐指数
3
解决办法
6万
查看次数

zsh - 在 <tab> 上完全展开二进制路径

在我当前的 zsh 行为中,在键入“sudo”后点击 Tab 只会添加一个空格。

$ sudo ...
Run Code Online (Sandbox Code Playgroud)

我真正想要的是当我点击选项卡时,选项卡完全扩展到它即将执行的二进制文件的路径,让我看到将运行的内容:

$ /usr/bin/sudo ...
Run Code Online (Sandbox Code Playgroud)

目的是防止我的机器上的本地用户被黑客入侵,一个条目添加到我的$PATH变量中,并且“sudo”运行恶意程序,这将很容易升级到 root。

zsh path autocomplete

10
推荐指数
1
解决办法
1840
查看次数

在 Ubuntu 中设置或获取 $JAVA_HOME 的系统范围方法?

我想知道 Ubuntu 本身是否提供了一种系统范围的方式来查找当前文件,JAVA_HOME或者是否有合适的地方设置JAVA_HOME.

Mac OS X 在这方面做得很好,因为/usr/libexec/java_home命令返回当前的JAVA_HOME. 但是对于 Ubuntu,我找到的材料总是告诉我将$JAVA_PATH指向设置为静态路径,该路径存储在~/.bash_profile.

但是,我认为这种方法有几个缺点:

  1. 一旦 Java 更新,迷你版本号就会改变,这使得静态路径不再可用。
  2. 使用 更改我系统中使用的 JRE 后update-alternatives,我必须$JAVA_HOME.bash_profile. 额外的工作很烦人。
  3. 一些$JAVA_HOME必需的程序,根本不知道.bash_profile。我必须$JAVA_HOME在他们的启动脚本中进行设置,因此一种标准且简单的获取方式$JAVA_HOME对我来说似乎很重要。

好吧,欢迎任何建议。谢谢。

ubuntu path java

10
推荐指数
1
解决办法
1万
查看次数

将 jar 文件的文件夹添加到我的路径

我有需要使用的 Java 工具。这些工具位于一个装满 jar 文件的文件夹中。出于显而易见的原因,我想将此文件夹添加到我的路径中,但是在我编辑 .bash_profile 以将新文件夹包含在 $PATH 变量中并获取它之后,它不起作用。我也试过注销,然后重新登录,这也不起作用。我只是不断收到错误消息“无法访问 jarfile .jar”

path java

10
推荐指数
1
解决办法
4万
查看次数

为什么这么多程序存在于 PATH 中?

至少让我对桌面 Linux 感到困惑的一件事是,几乎所有东西都在我的 PATH 中。我的意思是所有桌面应用程序,包括 gnome-character-map 和 glchess 之类的东西。这些没有命令行界面可言,所以我想不出我会定期从终端启动这些的情况 - 在这种不太可能的情况下,我无法想象需要输入完整的内容会带来不便路径。它看起来很杂乱,但也许有一个很好的理由。

那么,为什么发生这种情况呢?对性能或可维护性有什么显着影响吗?

path executable directory-structure

10
推荐指数
1
解决办法
435
查看次数

更改用户并在 shell 脚本中加载整个环境

我在使用我们的新贵脚本时遇到了一些问题,该脚本更改了用户并启动了一些 ruby​​ 守护进程。

在过去,我只会bash -c "do the business" -l someuser确保使用该-l标志来模拟登录。

到目前为止,这一直很有效,我们的 ruby​​ 进程一直在抛出以下错误:require: no such file to load -- rubygems (LoadError)经过一些调查,我发现此错误仅在我以 root 用户身份运行脚本时发生,即(当我sudo su或由 upstart 运行时)。

我认为这是一个 PATH 问题,因为当我首先手动设置路径时,它可以解决问题。

有没有办法改变用户并加载整个环境?

我也试过su user -csudo


为了更容易测试,我正在“root”(sudo su)并运行which bundle(捆绑是一个红宝石)。

这是我得到的:

  • sudo -i -u webuser which bundle # => 没有输出
  • su -l webuser -c which bundle # => 没有输出
  • sudo su - webuser -c which bundle …

login su path environment-variables

10
推荐指数
1
解决办法
3万
查看次数

列出当前 PATH 中的所有文件/二进制文件

是否有一种“简单”的方法可以运行“ls -la”样式的命令来列出当前 PATH 中的所有文件/可执行二进制文件?

(我打算将输出通过管道传输到 grep,以查找前缀未知但基本上已知“名称”的命令,即 bash 中的自动完成/制表符基本上无用的情况。所以某种“反向自动-完整的功能"...)

ls bash path autocomplete

10
推荐指数
1
解决办法
6317
查看次数

将二进制文件放在哪里,以便它们始终在路径中并且可以轻松找到

我正在制作一些我想轻松安装的二进制文件、脚本等(使用我自己的 rpm)。因为我希望每个人都可以访问它们,所以我的直觉是将它们放在 /usr/bin 中;

  • 无需更改路径

然而; 我的可执行文件现在消失在所有其他文件的池中;我怎样才能以一种简单的方式找回我放在那里的所有可执行文件。我在想:

  • /usr/bin 中的子目录(我知道我不能这样做;只是为了说明我的想法)
  • 另一个目录(/opt/myself/bin)并将每个可执行文件链接到/usr/bin(大量工作)
  • 另一个目录(/opt/myself/bin)并将目录链接到/usr/bin(这可能吗?)

什么是“最好的,最符合 linux 的方式”来做到这一点?

编辑:我们在公司对此进行了讨论,并提出了这个次优选项:将二进制文件放在 /usr/bin/company 中,并使用来自 /usr/bin 的符号链接。我对这个解决方案并不感到兴奋(讨论正在进行中)

path executable software-installation

10
推荐指数
1
解决办法
3232
查看次数

如何知道 $PATH 环境变量设置的原因和位置?

我在 OSX 上的 iterm2 中使用 zsh 5.0.8 版本。

我启动计算机并向printenv我显示$PATH变量:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin
Run Code Online (Sandbox Code Playgroud)

根据我的理解,zsh 将按顺序获取以下文件:

/etc/zshenv
~/.zshenv
/etc/zshrc
~/.zshrc
Run Code Online (Sandbox Code Playgroud)

我查了一下,我没有前 3 个文件,我.zshrc的基本上是空的,与 $PATH 变量无关。

那么$PATH变量集在哪里???

zsh path

9
推荐指数
1
解决办法
8411
查看次数

/etc/profile 不是为 `sudo su` 提供的

我已经PATH=foo设置了/etc/profile

根据/etc/passwordrootmyaccount用户都/bin/bash作为登录shell。

当我以 身份登录时myaccountPATH已从 正确设置/etc/profile。如果 I 那么sudo suPATH不包括在/etc/profile.

如果我sudo su -改为,则/etc/profile来源。我知道无论如何这样做是一种很好的做法,但我不明白为什么有必要使用/etc/profile.

为什么sudo suclobber PATH,无视/etc/profile以及如何使它不?

bash sudo path

9
推荐指数
1
解决办法
8292
查看次数