当前位置: 首页>>技术问答>>正文


什么是“$PATH”和“~/bin”?我怎么能有个人脚本?

,

问题描述

什么是$PATH

我怎样才能拥有仅适用于我的命令/程序?我之前看到过这条路径~/bin,但是它用于什么,我该如何使用它?

最佳解决办法

$ PATH是用于查找命令的环境变量。 〜是你的主目录,所以〜/bin将是/home /user /bin;这是一个普通的目录。

例如,在shell中运行”ls”时,实际运行/bin /ls程序;具体位置可能因系统配置而异。这是因为/bin在$ PATH中。

要查看路径并找到任何特定命令的位置:

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls     # searches $PATH for an executable named "ls"
/bin/ls
$ ls           # runs /bin/ls
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ /bin/ls      # can also run directly
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

要拥有自己的专用bin目录,只需将其添加到路径中即可。通过编辑〜/.profile(隐藏文件)来包含以下行来完成此操作。如果行被注释,您只需要取消注释它们;如果他们已经在那里,你们都准备好了!

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
  PATH="$HOME/bin:$PATH"
fi

现在你需要创建你的〜/bin目录,因为.profile是在登录时运行的,如果当时只存在〜/bin,你需要再次登录才能看到更新的PATH。

我们来测试一下:

$ ln -s $(which ls) ~/bin/my-ls   # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls          # lookup through $PATH
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ ~/bin/my-ls    # doesn't use $PATH to lookup
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

次佳解决办法

关于~/bin和仅适用于您的用户的命令/程序

最近的Ubuntu版本包括$PATH中的~/bin目录,但仅限于~/bin目录存在时。

如果它不存在:

  1. 确保您的~/.profile包含以下节(默认~/.profile已经执行):

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    
  2. 创建~/bin目录:

    mkdir -p ~/bin
    
  3. 重启计算机,或强制bash到re-read ~/.profile

    exec -l bash
    

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6659.html,未经允许,请勿转载。