$ PATH和可执行文件有问题


8

我在生成的目录中有一个UNIX可执行文件。我相信我需要在我的目录中找到该目录,$PATH以便Unix可执行文件是可执行文件,但是源代码文档中说我需要编辑shell配置文件以添加$home/meme/bin到shell路径中。

Answers:


10

如果您希望能够通过在命令行上键入其名称来执行程序,则该程序可执行文件必须位于PATH环境变量中列出的目录之一中。您可以看到这样的变量的当前值($是提示,下面的值是一个示例):

$ echo $PATH
/home/drbunsen/bin:/usr/local/bin:/usr/bin:/bin

您有几种选择。尽管#1和#2涉及的高级概念较少,但我建议#3在实践中减少工作量:

  • 您可以将可执行文件放入您的目录中PATH。例如,如果/home/drbunsen/bin您的上已经PATH有该文件,则可以在其中放置可执行文件。或者,/usr/local/bin如果希望所有用户都可以使用可执行文件,则可以将其放入。
  • 您可以在其中添加可执行文件所在的目录PATH。编辑文件~/.profile~/意味着该文件位于您的主目录中)(如果文件不存在,请创建该文件)。添加这样的一行:

    PATH=$PATH:$HOME/meme/bin
    

    (请注意,它$HOME不是$home; unix通常是区分大小写的。您也可以写成~/meme/bin~$HOME它在文件路径开头时的同义词。)更改将在您下次登录时生效。您可以键入终端中的同一行,它将影响在该终端中运行的外壳以及从该终端启动的任何程序。

  • 我建议的方法是将可执行文件与程序中的其他文件一起保存在其自己的目录中,但不要更改PATH
    将可执行文件保留在$HOME/meme其中的优点是,如果您要删除或升级程序,则所有内容都集中在一个位置。某些程序甚至需要此命令才能找到它们使用的文件。不更改PATH的优点是安装和卸载程序的工作量较小。
    为了充分利用这两个方面,请在您的目录中创建一个指向实际可执行文件的符号链接PATH。在命令行中,运行如下命令:

    cd ~/bin
    ln -s ../meme/bin/* .
    

    假设这~/bin已经在您的PATH;如果不是,请~/.profile按照上面的说明进行添加。如果愿意,请选择其他位置。现在使程序可用只是创建符号链接的问题。使它们不可用只是删除符号链接的问题;而且您可以通过查看符号链接轻松地跟踪手动安装的程序以及它们的位置。


吉尔斯,哇,谢谢您的详细解释。非常感谢您的帮助。感谢您抽出宝贵时间详细回答我的问题,并在一定程度上使一切变得清晰。
2011年

我注意到的另一件事是,在home / meme /目录中似乎没有/ bin目录。我是否需要创建bin以便在此处建立指向我的符号链接PATH?谢谢。
2011年

@ dr.bunsen ~/bin是一个常见的位置,某些发行版会自动创建它。如果没有,则必须创建它并将其PATH手动添加。该位置~/bin只是一个约定,您可以根据需要选择其他名称。
吉尔(Gilles)“所以,别再邪恶了”,

通配符命令不起作用,因为ln将扩展中的最后一项解释为目录:“用法:ln [OPTION] ... [-T] TARGET LINK_NAME(第一种形式)或:ln [OPTION] ... TARGET(第二种形式)或:ln [OPTION] ... TARGET ... DIRECTORY(第三种形式)或:ln [OPTION] ... -t DIRECTORY TARGET ...(第四种形式)“为了解决这个问题,我添加了“- t ./“
adam.r 2014年

1
@ adam.r我写的ln -s ../meme/bin/* .不是ln -s ../meme/bin/*。看起来您在复制命令时错过了一个字符。
吉尔(Gilles)'所以
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.