May*_*hux 4 command-line environment-variables
以常规方式将目录添加到 PATH:
PATH=$PATH:/new-directory
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果您向 PATH 添加一个新目录,那么它将在不检查它是否已经在 PATH 中的情况下添加。
例如:
echo $PATH
Run Code Online (Sandbox Code Playgroud)
给出:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
现在,如果我添加/usr/bin:
PATH=$PATH:/usr/bin
Run Code Online (Sandbox Code Playgroud)
然后 PATH 变为:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin
Run Code Online (Sandbox Code Playgroud)
所以,如果你能注意到,现在/usr/bin是重复的。
那么,如何在不重复的情况下向 PATH 添加新目录?
一个简短的方法是使用:
[[ ":$PATH:" =~ ":/new-directory:" ]] || PATH="/new-directory:$PATH"
Run Code Online (Sandbox Code Playgroud)
说明:
[[条件命令,用于测试。=~二进制运算符则返回0从其中被认为是一个扩展正则表达式右边的字符串从左边的字符串相匹配,否则为1。/new-directory是未在PATH找到),由于||逻辑或控制操作员,第二命令被执行:PATH="/new-directory:$PATH"。观察:
PATH="/new-directory:$PATH"PATH="/new-directory:$PATH"我使用 Stephen Collyer 的 bash_path_funcs,早在 2000 年就在 Linux Journal 中进行了描述:
https://www.linuxjournal.com/article/3645 https://www.linuxjournal.com/article/376 8 https://www.linuxjournal.com/article/3935
addpath仅当路径中最初不存在该条目时,该函数才会将其添加到路径中。delpath -n从路径中删除所有不存在的目录。
您可以pathfunc.tgz从 https://web.archive.org/web/20061210054813/http://www.netspinner.co.uk:80/Downloads/pathfunc.tgz获取该文件
| 归档时间: |
|
| 查看次数: |
2393 次 |
| 最近记录: |