Questions tagged «path»

PATH(全部大写)是类Unix操作系统,DOS,OS / 2和Microsoft Windows上的环境变量的名称,指定一组目录,在目录中搜索可执行程序。

1
是否可以在$ PATH中添加单个可执行文件而不是整个目录?
我在OSX中安装了XAMPP,默认情况下,它会将其自身bin目录(充满各种实用程序)的路径添加到我的$PATH变量中: # Add path to XAMPP PHP version export XAMPP_PHP=/Applications/XAMPP/xamppfiles/bin export PATH="$XAMPP_PHP:$PATH" 不幸的是HEAD,由于OSX不区分大小写的文件系统,其实用程序之一被调用,它与Unix head命令冲突。XAMPP HEAD完全无关head(我认为它发出HTTP HEAD请求)。 当然,我想同时使用headXAMPP和XAMPP,因此我只更改了路径变量的顺序: export PATH="$PATH:$XAMPP_PHP" 这让我可以使用head,但是现在XAMPP的PHP版本(例如5.5)与OSX随附的预安装的PHP版本(5.3)之间存在冲突。由于到5.3的路径是第一位的,因此最终会优先。 我的解决方案计划是在XAMPP的PHP版本之前加上完整的文件路径和名称,然后在以下位置附加其余路径$PATH: export PATH="/Applications/XAMPP/xamppfiles/bin/php:$PATH:$XAMPP_PHP" 这似乎不起作用。当我重新启动bash并检查时php -v,它仍在PHP 5.3(内置版本)上。甚至可以添加一个特定的文件路径$PATH吗?
9 path 

8
行的开头或中间的模式的Grep
我首先要说的是,我认为这个问题比听起来听起来要简单得多。 我需要做的是:检查PATH环境变量中的文件夹。可能在开始时或之后。我只需要验证该文件夹在那里。 我的问题的例子-让我们使用/opt/gnome。 场景1:文件夹不在PATH的开头 # echo "$PATH" /sbin:/usr/sbin:/opt/gnome:/var/opt/gnome # echo "$PATH" | grep ":/opt/gnome" /sbin:/usr/sbin:/opt/gnome:/var/opt/gnome 请注意,grep必须足够具体,以使其不会被捕获/var/opt/gnome。因此冒号。 场景2:文件夹位于PATH的开头。 # echo "$PATH" /opt/gnome:/sbin:/usr/sbin:/var/opt/gnome # echo "$PATH" | grep "^/opt/gnome" /opt/gnome:/sbin:/usr/sbin:/var/opt/gnome 这是我的问题-我需要使用此文件夹搜索冒号或行首。我想做的是以下两个括号表达式之一: # echo $PATH | grep "[^:]/opt/gnome" # echo $PATH | grep "[:^]/opt/gnome" 但是[^并[:有自己的含义。因此,以上两个命令不起作用。 有没有一种方法可以在一个命令中针对这两种情况进行grep?

2
已安装sqlite3 v3.8,但默认情况下mac终端仍运行旧版本3.6
我有一台运行OS X 10.6.8的Mac,它已预装SQLite3 v3.6。我使用自制软件安装了v3.8。但是,当我在终端中键入“ sqlite3”时,它将继续运行旧的预安装版本。有什么帮助吗? 不确定PATH变量是否与此有关,但是运行echo $ PATH会导致以下结果:/usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ usr / X11 / bin SQLite3的新版本位于以下目录中:/ usr / local / Cellar / sqlite 我应该补充一点,我也将二进制可执行文件下载到了我的桌面上,并且如果我从桌面上单击该文件也可以,但是在终端上不起作用。 任何帮助将不胜感激?
9 path  sqlite 

2
为什么即使正确指定了$ PATH,Bash也无法找到命令?
我在文件/ etc / profile中指定命令的路径: export PATH=$PATH:/usr/app/cpn/bin 我的命令位于: $ which ydisplay /usr/app/cpn/bin/ydisplay 因此,当我执行“ echo $ PATH”输出时,如下所示: $ echo $PATH ...:/usr/app/cpn/bin 一切正常,但是当我尝试通过SSH启动命令时,出现错误: $ ssh 127.0.0.1 ydisplay $ bash: ydisplay: command not found 但是我的道路仍然存在: $ ssh 127.0.0.1 echo $PATH ...:/usr/app/cpn/bin 请向我解释为什么Bash在SSH会话期间无法找到ydisplay,以及如何正确配置SSH以避免此问题。 而且,如果我在当前用户的本地文件.bashrc中指定$ PATH,则它们都可以正常工作。但是我只想修改一个文件,而不是为每个用户指定很多文件。这就是为什么我要问。
9 linux  bash  shell  ssh  path 

1
我在哪里设置bash路径?
我想~/bin从我的路径中删除。几个月前,我对Linux(Ubuntu)感到陌生,但我不知道如何添加它。 当我搜索下面列出的所有文件时,什么都没有显示。 还有什么地方可以设置?它被后前置于$HOME/.profile前缀与PATH$HOME/bin 如果有什么不同,我可以从命令提示符和正在运行的脚本中获得相同的PATH。 #!/bin/bash { echo "first dir of PATH is: '${PATH%%:*}'" shopt -s nullglob cat \ /etc/profile \ /etc/bash.bashrc \ /etc/profile.d/*.sh \ $HOME/.bashrc \ $HOME/.bash_aliases \ /etc/bash_completion \ $HOME/.bash_completion* \ $HOME/.profile \ $HOME/.profile_zap \ $HOME/.bash_profile* \ $HOME/.bash_login* \ | sed -rne '/~\/bin/p' } 输出为: first dir of PATH …

2
更改用户并在Shell脚本中加载整个环境
我在使用我们的新贵脚本时遇到了麻烦,该脚本更改了用户并启动了一些ruby守护进程。 在过去,我只会bash -c "do the business" -l someuser确保使用该-l标志来模拟登录。 到目前为止,这一直很好,我们的ruby进程一直抛出以下错误:require: no such file to load -- rubygems (LoadError)经过调查后,我发现此错误仅在以root用户身份运行脚本时(即,当我sudo su或当被新贵运行时)发生。 我认为这是一个PATH问题,因为当我首先手动设置路径时,它可以解决问题。 有没有办法改变用户并加载整个环境? 我也曾尝试su user -c和sudo。 为了使测试更容易,我正在“扎根”(sudo su)并运行which bundle(捆绑是一件红宝石的东西)。 这是我得到的: sudo -i -u webuser which bundle #=>没有输出 su -l webuser -c which bundle #=>没有输出 sudo su - webuser -c which bundle #=>没有输出 但是以Webuser的身份登录 …

5
通过Makefile将目录添加到PATH
将我在Makefile中修改的PATH导出到当前终端中时遇到一些麻烦。我试图将Makefile目录所在的bin文件夹添加到PATH中。 这是makefile的相关部分: PATH := $(shell pwd)/bin:$(PATH) install: mkdir -p ./bin export PATH echo $(PATH) 回显可以正确打印,但是如果我在终端中重做回显,则PATH保持不变。

1
$ PATH中的查找如何在后台运行?
网络上有太多文章/资源可以教人们如何设置环境变量,PATH以便他们可以使用java或python等的简写代替命令行界面中的绝对路径。 我很想知道的是,当我们键入命令并按回车键时,背后是什么(类似于在浏览器中键入URL时发生的情况)。 这是我的猜测: 读取命令(解析/预处理标准输入以获取正确的参数$@) 命令查询 命令执行(程序已启动,消耗内存,stdout / stderr到shell) 重新渲染通过相关环境变量(例如仿真器$PS#,$PROMPT等等) 我最想弄清楚的部分是命令查找。显然,$PATHs被某些后台函数使用,并用:/ ;分隔为分隔符,那么发生了什么?我们是否使用哈希表(键:文件的基名,值:文件的绝对目录名)将二进制文件存储在这些PATH或其他挂钩下? 注意:我最初认为它是哈希表,因为我可以[ -z hash [command] ]用来检查当前环境中是否有可用的命令,但是当我使用时hash | grep python,在which python按预期方式工作时,我从输出中什么也没得到。(我认为该机制可能是特定于外壳的,但我想对此有更多的了解。)
8 shell  path 

2
如何在运行时使用nix安装的库?
我在nix不是root用户的系统中以“单用户模式” 使用(请参见下面有关我的nix设置的说明)。 我想快速运行我的一个二进制文件,该二进制文件与系统中不存在的库动态链接。 因此,我使用以下命令安装了该库nix: $ nix-env -qa 'gmp' gmp-4.3.2 gmp-5.1.3 $ nix-env -i gmp-5.1.3 但是链接器仍然找不到该库: $ ldd -r ../valencies ../valencies: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ../valencies) ../valencies: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ../valencies) linux-vdso.so.1 => (0x00007fffbbf28000) /usr/local/lib/libsnoopy.so (0x00007f4dcfbdc000) libgmp.so.10 => not found libffi.so.5 => /usr/lib64/libffi.so.5 (0x00007f4dcf9cc000) …


3
使用LXDE在Debian Wheezy中为单个用户将$ HOME / bin添加到PATH
在Ubuntu中,如果$ HOME / bin存在,则会自动将其添加到PATH,但这在Debian中不会发生。 我如何将其永久添加到给定用户的PATH中,但仅适用于他,而不适用于所有用户?我希望它对GUI程序也有效,而不仅仅是终端。 编辑:澄清一下,我使用LXDE,并且从登录管理器使用,即不是startx。.bashrc对于我在终端外部启动的程序不起作用。
8 debian  path  lxde 

1
OS X和其他Unices中的/ etc / paths
是/etc/paths通过阅读每一个壳,我在OS X上运行?例如,如果我使用zsh,它将解析/etc/path以填充$PATH吗? OS X遵循的填充顺序到底是什么$PATH?它与其他Unices的做法不同吗?
8 osx  zsh  path  etc 

2
查找源shell脚本的位置
源shell脚本是否可能知道其位置?我已经阅读了确定源shell脚本的路径,但是答案集中于bash,tcsh如果使用POSIX shell,则失败。$0也不是解决方案,并且会产生错误的结果。 解决方案不需要100%可靠。该路径不太可能包含硬链接或符号链接。 # sourcing the script should yield the absolute path to the script . somedir/thescript # within “thescript” -> /tmp/foo/bar/somedir 背景知识:该脚本是现有应用程序的一部分,该应用程序在bin相对于源脚本的已知位置(每个体系结构有所不同)的目录中包含数十个二进制文件。要使用该应用程序,用户需要获取将bin目录添加到的脚本PATH,以便可以在当前外壳程序(可能是任何一个外壳程序)中轻松调用应用程序的二进制文件。
8 shell  path 


5
在Ubuntu中设置或获取$ JAVA_HOME的系统范围的方法?
我想知道Ubuntu本身是否提供了一种系统范围内的方法来查找当前值,JAVA_HOME或者是否有合适的位置进行设置JAVA_HOME。 Mac OS X在此方面做得很好,因为/usr/libexec/java_homecommand返回了current JAVA_HOME。但是对于Ubuntu,我发现的材料总是告诉我将$JAVA_PATH指向的位置设置为静态路径,该路径存储在中~/.bash_profile。 但是,我认为这种方法有几个缺点: Java更新后,迷你版本号将更改,从而使静态路径不再可用。 改变我的系统中使用与JRE后update-alternatives,我要修改$JAVA_HOME的.bash_profile。额外的工作很烦人。 某些$JAVA_HOME程序根本不知道.bash_profile。我必须设置$JAVA_HOME他们的启动脚本,因此$JAVA_HOME对我而言,一种简单易行的获取方法似乎很关键。 好吧,任何建议都欢迎。谢谢。
8 ubuntu  path  java 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.