bash - 如何检查 PATH 是否已包含特定目录

标签 bash ubuntu

我希望能够重新加载用户的 .profile,以便它“永久”更新 PATH,而无需重新启动系统。这就是我在 .profile 文件中所做的事情,但它不起作用。

if [[$PATH != "*path_to_directory*"]];then
     PATH=<path_to_directory>:$PATH
fi

将添加内容保存到 .profile 后,我运行 source .profile 来重新加载它,但我只是收到错误,并且我的 PATH 未更新。

最佳答案

您的陈述有两个问题。首先,您需要在 [[ 之后和 ]] 之前添加一个空格。其次,* 应该位于引号之外,以便匹配字符串:

if [[ $PATH != *"path_to_directory"* ]];then
    echo "adding path to directory"
    PATH=path_to_directory:$PATH
fi

所以输出将是:

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
$ source .profile
adding path to directory
$ echo $PATH
path_to_directory:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
$ source .profile
$ echo $PATH
path_to_directory:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin

关于bash - 如何检查 PATH 是否已包含特定目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707051/

相关文章:

ubuntu - 如何在 Ubuntu 10.4 中安装 webkit?

linux - 以降序显示 %cpu 的顶级命令

java - 如何在 Torque Clusterr 上查看 .jar 作业的进度

javascript - 使用node.js将rails应用程序部署到ubuntu

ubuntu - 我可以从培训文件夹中删除 events.out.tfevents.XXXXXXXXXX.computer_name 文件吗

java - 在 ubuntu 服务器上启动 spring boot jar 的问题。启动 ApplicationContext 时出错

bash - ${!prefix@} 当使用 ‘@’ 并且扩展出现在双引号内时

C system()调用参数展开

linux - 无法在 Unix 中捕获 SIGQUIT 信号

bash - 男人 grep | grep "color"没有给出结果