Questions tagged «path»

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

7
$ 0是否总是包含脚本的路径?
我想grep当前脚本,以便可以从顶部的注释部分打印出帮助和版本信息。 我在想这样的事情: grep '^#h ' -- "$0" | sed -e 's/#h //' 但是后来我想知道,如果脚本位于PATH中的目录中并且在未显式指定目录的情况下调用该脚本,将会发生什么情况。 我搜索了有关特殊变量的说明,并找到了以下说明$0: 当前shell或程序的名称 当前脚本的文件名 脚本本身的名称 运行命令 $0如果没有该脚本而调用脚本,则这些命令都不能清楚表明目录的值是否包含该目录。最后一个实际上向我暗示不会。 在我的系统上测试(Bash 4.1) 我在/ usr / local / bin 中用一行创建了一个名为scriptname的可执行文件,echo $0并从不同位置调用了它。 这些是我的结果: > cd /usr/local/bin/test > ../scriptname ../scriptname > cd /usr/local/bin > ./scriptname ./scriptname > cd /usr/local > bin/scriptname bin/scriptname > cd …

1
POSIX是否保证标准实用程序在PATH中?
在“命令搜索和执行”部分中,POSIX规范指出PATH在找到要执行的实用程序时会进行搜索(某些例外)。规范中是否提到了PATH将初始化为可确保找到所有标准实用程序的值的任何地方? 还是我需要执行以下操作以确保在尝试运行标准实用程序时永远不会出现“找不到命令”错误? PATH=$(command -p sh -c 'printf %s "${PATH}"') (请参阅实用程序的POSIX规范command)
11 path  posix  standard 

4
Bash路径补全如何与sudo一起使用?
制表符路径补全不适用于(至少在Ubuntu和AFAIK Arch上)与 sudo mount <whatever> 我尝试挂载的iso文件不在中/etc/fstab。如果我只是输入 mount <whatever> 完成工作正常(但命令失败,因为我不是root用户)。显然是sudo打破了它。 如何使sudo完成工作? 令人惊讶的是 sudo umount <whatever> 完成工程。如何实现的?会调查/etc/fstab吗? 解决方案:我只是将一个shell脚本放入传递了参数的/usr/local/bin调用中sudo mount ...。调用此脚本时,完成是可行的,因为这样做不会成功sudo。

2
如何使用ln -s创建命令行快捷方式?
我有一个sh文件,希望可以随时从终端打开。我想在终端中输入“ studio”,并打开android studio 我记得ln -s曾经这样做,但是我已经忘记并且已经浪费了很多时间在网上搜索。 另外,创建的符号链接保存在哪个目录中? 这是我的努力语法,找不到命令 ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio ricardo@debian:~$ studio bash: studio: command not found


2
“ echo $ PATH”和/ etc / paths有什么区别?
当我回声$ PATH我得到这个:Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools。 我想从中删除一些路径,但是当我使用命令打开文件时vim /etc/paths,得到以下结果: /usr/local/bin /usr/bin /bin /usr/sbin /sbin 文件/ etc / paths是否与$ PATH变量不同?
10 osx  path 

4
为什么我的程序“ set”没有执行?
我创建了一个简单的C程序,如下所示: int main(int argc, char *argv[]) { if (argc != 5) { fputs("Not enough arguments!\n", stderr); exit(EXIT_FAILURE); } 我在etc / bash.bashrc中修改了我的PATH,如下所示: PATH=.:$PATH 我已经将该程序保存为set.c,并使用 gcc -o set set.c 在文件夹中 ~/Programming/so 但是,当我打电话 set 2 3 什么都没发生。没有文字出现。 呼唤 ./set 2 3 给出预期的结果 我以前从未遇到过PATH问题 which set 返回./set。因此,似乎PATH是正确的路径。发生什么事了?

3
将二进制文件放在哪里,以便它们始终在路径中并且可以轻松找到
我正在制作一些我想轻松安装的二进制文件,脚本等(使用自己的rpm)。因为我希望每个人都可以使用它们,所以我的直觉是将它们放在/ usr / bin中; 无需更改路径 然而; 我的可执行文件现在消失在其他所有文件中;我如何以一种简单的方式找回放置在其中的所有可执行文件。我在想: / usr / bin中的一个子目录(我知道我不能这样做;只是为了说明我的想法) 另一个目录(/ opt / myself / bin),并将每个可执行文件链接到/ usr / bin(很多工作) 另一个目录(/ opt / myself / bin)并将目录链接到/ usr / bin(这可能吗?) 做到这一点的“最佳,最符合Linux的方式”是什么? 编辑:我们在公司中对此进行了讨论,并提出了这个次优的选择:使用来自/ usr / bin的符号链接将二进制文件放在/ usr / bin / company中。我对这种解决方案并不感到兴奋(讨论仍在进行中)

1
如何搜索“男性”页面的路径?
我对如何man设置用于查找页面的路径感到困惑。“正确的事情”似乎神奇地发生了。例如,如果将我的PATH从 /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/usr/texbin 至 /usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/usr/texbin 搜索man页面的路径(根据man --path)从 /usr/share/man:/usr/local/share/man:/opt/X11/share/man:/usr/local/git/share/man:/usr/texbin/man 至 /usr/local/git/share/man:/usr/share/man:/usr/local/share/man:/opt/X11/share/man:/usr/texbin/man 不知何故,我要“覆盖”默认Git的Git版本是在任何内置Git的文档之前都能正确找到其文档。这是怎么回事?
10 path  man 

4
列出当前PATH中的所有文件/二进制文件
有没有一种“简便”的方式来运行“ ls -la”样式的命令,以列出当前PATH中的所有文件/可执行二进制文件? (我打算将输出通过管道传递到grep,以查找前缀未知但基本已知的“名称”的命令,这种情况下,bash中的自动补全/制表符实际上是无用的。因此,某种形式的“反向自动完整功能” ...)
10 bash  ls  path  autocomplete 

2
为什么PATH中包含这么多程序?
至少让我感到困惑的是台式机Linux,一件事就是我的PATH中几乎所有内容。每件事,我的意思是每个桌面应用程序,包括gnome-character-map和glchess之类的东西。这些没有命令行界面可言,所以我想不出要定期从终端启动这些界面的情况-而且在这种不太可能的情况下,我无法想象需要输入完整的命令行界面而感到不便路径。看起来似乎很混乱,但是也许有充分的理由。 那么,为什么会这样呢?对性能或可维护性有任何显着影响吗?

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

5
从脚本中找到绝对路径
在脚本中,我进入$0了可能的相对路径。为了将其转换为绝对值,我发现了我不理解的解决方案: abspath=$(cd ${0%/*} && echo $PWD/${0##*/}) 我的问题是内部的魔法${0%/*}和${0##*/}。看起来前者提取目录名,而后者提取文件名,我只是不知道如何。
10 bash  path 

1
使用`/ etc / paths`或`/ etc / paths.d`将项目添加到macOS Sierra中的PATH?
从我在各个地方进行的/usr/libexec/path_helper所有讨论中得出的结论来看,显然PATH在macOS Sierra 10.12中向环境变量添加项目的现代方法是: 编辑/etc/paths档案 添加要从/etc/paths.d目录读取的文件。 我的问题: 现代macOS上哪个更符合犹太标准? 如果更好或更常见的方式是将文件拖放到paths.d目录中,那么这些文件的名称和内容应该是什么?有什么例子吗? 我正在使用zsh而不是bash。这有什么区别吗? 这两个选项是macOS独有的吗?还是它们出现在BSD或其他类似Unix的系统中?
10 osx  zsh  path  etc 

1
zsh-在<tab>上完全展开二进制路径
在我当前的zsh行为中,键入“ sudo”后单击tab只会添加一个空格。 $ sudo ... 我真正想要的是使选项卡完全扩展到在按下选项卡时将要执行的二进制文件的路径,从而使我能够看到将要运行的二进制文件: $ /usr/bin/sudo ... 目的是防止我的计算机上的本地用户被黑客入侵,将条目添加到我的$PATH变量中以及“ sudo”运行恶意程序的情况,这很容易升级为root。
10 zsh  path  autocomplete 

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.