我们正在使用 CentOS 6 设置 SGE 集群。我的系统管理员正在安装不是通过 RPM 安装的应用程序(即通过其他方式,如 make install)应该放在一个非标准目录中,在这种情况下类似于/share/apps/install/bin/. 此路径目前已添加到大多数会话(登录、qlogin 等)中/share/apps/etc/environment.sh,通过/etc/bashrc. environment.sh还将一些内容附加到 PERL5LIB。
我/share/apps/install/bin遇到的问题是没有添加到某些实例中,例如从 crontab 中调用的东西。
我知道我可以PATH=/bin:/usr/bin:/blah/blah:...在我的个人 crontab 或任何给定的脚本或 crontab 条目中手动和显式设置,但我希望在外部某处有一个设置,/etc/profile或者/etc/bashrc将非标准.../bin目录放入所有用户的所有路径中.
我的.bash_profile.
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Run Code Online (Sandbox Code Playgroud)
我想我在互联网上的某个地方找到了它。
如果我只写PATH="$HOME/bin:$PATH"而不检查目录是否存在也可以吗?如果我添加一个不存在的路径会导致问题$PATH吗?
我正在尝试将 Firefox 添加到我的 PATH 中,就像在本教程中一样。我的 mac book air 上 GUI 的 Applications 文件夹中有 Firefox。我熟悉在我的路径中添加位置。但我不知道如何在我的机器上找到 firefox 可执行文件。应用程序文件夹去哪里寻找 Firefox 可执行文件?
我想使用which系统的默认路径,忽略用户 shell 配置文件中的任何修饰。
我正在尝试编写一个脚本来查找系统的 Ruby 二进制文件。许多 Ruby 开发人员使用 Ruby 版本管理器,它会~/.rvm/bin在他们的$PATH. 我想绕过这个并使用系统附带的 Ruby 版本,或者是通过系统的包管理器安装的。
这是我迄今为止尝试过的:
$ env -i sh -c "which ruby"
Run Code Online (Sandbox Code Playgroud)
这没有输出,并以 1 退出。我希望它可以工作,因为路径包含/usr/bin,并且我的系统附带了一个 Ruby 二进制文件/usr/bin/ruby:
$ env -i sh -c "echo \$PATH"
/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
$ which -a ruby
# ...
/usr/bin/ruby
Run Code Online (Sandbox Code Playgroud)
一些额外的细节:
env -s bash -c "which ruby" 也没有找到任何东西。env -i zsh -c "which ruby"确实找到了/usr/bin/ruby,但我不能依赖zsh.which(以确保我使用的是二进制文件,而不是内置的 shell)没有任何区别。我在 OS X …
在我的办公室电脑上,我似乎有两个PATH变量。
$path :这是由“”(空格)分隔的
$PATH :这是由“:”(冒号)分隔的
虽然当我更新一个时,另一个也会更新。这是 Linux 中的正常行为还是我的机器中发生了什么奇怪的事情?
我应该保留它们还是删除其中之一?
编辑:我正在使用csh,我发现这是因为我的一些同事正在更新“路径”变量,而其他人则使用PATH. 虽然我删除PATH了 my 中所有出现的更新,.cshrc但当我尝试回应它们时它仍然出现。
我有一种感觉,这台机器刚刚发生了一些不好的事情。
faheem@bulldog:/usr/local/src/mercurial$ sudo dpkg -i
mercurial_3.0-1_amd64.deb mercurial-common_3.0-1_all.deb
dpkg: warning: 'ldconfig' not found in PATH or not executable
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable
dpkg: error: 2 expected programs not found in PATH or not executable
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin
and /sbin
Run Code Online (Sandbox Code Playgroud)
这是我已经使用了一段时间的旧机器。假设有一天它会死。看起来可能是这一天。它更早开始抛出错误,看起来有人刚刚重新启动了它。
更新:运行后
sudo -s
Run Code Online (Sandbox Code Playgroud)
我检查了路径的值
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
所以这里缺少一些东西,例如sbin,和/usr/sbin。
更新 2:
事实证明,一个或多个未知的人从/etc/sudoers.
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Run Code Online (Sandbox Code Playgroud)
感谢安东尼的解释。
我需要在用户的 PATH 中找到程序文件。我发现了几个解决方案,最好的是command和type。
哪个更好、更快、类似于 UNIX 的方式,为什么?
command -v <application>
type -p <application>
Run Code Online (Sandbox Code Playgroud) 我需要在文件夹结构中获取 foo.txt 的路径。此结构中有多个 foo.txt 文件,但我需要一个自动化来查找最新的。建议?
所以我刚刚安装了最新的 git,以及官方的 mac 安装程序。我在小牛队。
可悲的是, git --version 仍然是
git version 1.9.3 (Apple Git-50)
Run Code Online (Sandbox Code Playgroud)
哪个 git 给了我:
/usr/bin/git
Run Code Online (Sandbox Code Playgroud)
相反,git 安装程序将更新的 git 安装在
/urs/local/git
Run Code Online (Sandbox Code Playgroud)
回显 $PATH 给出:
[some hidden paths]:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin/:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
如何让我的 mac 使用正确的更新 git?
我刚刚从源代码编译并安装了 Apache Web 服务器,现在我想将apachectl脚本添加到PATH.
我知道我需要将目录添加到root用户的PATH(因为脚本需要以 root 身份运行),所以我想我会尝试添加以下行:
/root/.bashrc#
# add directory of apachectl to PATH
PATH=$PATH:/usr/local/apache2/bin
Run Code Online (Sandbox Code Playgroud)
我知道我添加的路径是正确的,但是如果我运行命令:
sudo apachectl start
Run Code Online (Sandbox Code Playgroud)
我得到:
sudo: apachectl: command not found
Run Code Online (Sandbox Code Playgroud)
如何将此目录添加到我的PATH?