首页 > 解决方案 > Linux 检查 PATH 是否存在

问题描述

我想制作一个 shell 脚本来检查是否添加了环境变量,否则。

if [ ! echo $PATH | grep "/what_i_want_to_add" ]; then # If there is no environment variable
    export PATH=$PATH:/what_i_want_to_add
fi

如果可能,我想使用 /dev/null 丢弃输出。
我应该怎么办?

标签: bashshell

解决方案


这是archlinux里面用到的一个函数/etc/profile。将路径添加到PATH.

# Append our default paths
appendpath () {
    case ":$PATH:" in
        *:"$1":*)
            ;;
        *)
            PATH="${PATH:+$PATH:}$1"
    esac
}

# usage example:
appendpath '/what_i_want_to_add'
  • case ":$PATH:" in- 匹配$PATH但带有尾随和前导冒号,以便我们可以:
    • *:"$1":*)- 匹配:$PATH:任何内容,后跟冒号,后跟参数,后跟冒号,以及任何内容。因为我们使用":$PATH:"它会扩展为:/path1:/path/2:/path/3:可以*:/path1:*与通配符匹配的表达式。
      • 如果匹配成功,什么都不做
    • *)- 别的
      • 将参数添加到PATH.
      • ${PATH:+$PATH:}- 一个外壳参数扩展。如果PATH为空或 NULL,则展开为空。如果路径不为空,则扩展为$PATH后跟冒号。这可以处理空PATH=参数,以便:不添加前导空。

推荐阅读