如何为用户可靠地在PATH之前或之后添加

时间:2019-06-12 06:23:07

标签: linux sudo

有.bashrc,.profile和.bash_profile。我知道它们会在不同的情况下使用。

我想在〜/ bin之前始终添加PATH ,例如不管它是不是交互式会话。当有人嘲笑我时,我希望它也能工作。

我该怎么做?当有人嘲笑我时,我发现以上3个文件均未使用。当我的用户帐户被使用时,包括有人对我表示敬意时,我总是希望始终可靠地将〜/ bin前缀到PATH。

编辑:澄清:不,与某些重复的问题怀疑相反,这不是关于当爱丽丝运行“ sudo bob some-program”时使爱丽丝的PATH /环境继承到鲍勃。这是关于每当新使用bob运行进程时,使bob始终在前面始终具有/ home / bob / bin的PATH,该进程包括但不一定限于交互式会话,非交互式会话和被sudo操作,尤其是在被迫时,因为这似乎是最有问题的情况。

1 个答案:

答案 0 :(得分:0)

我一直在使用以下脚本(canonical copy),其中包含路径列表。诚然,我不使用sudo

# Significant care is taken to be sh-compatible; if bash or zsh could be
# required, it could be made simpler or more generic.

# Known source'rs:
# ~/.profile
# ~/.zshrc
# ~/.xprofile
# ~/.xsessionrc
# ~/.bashrc
# ~/.config/plasma-workspace/env/*.sh

has_PATH () {
    local tmp=":$PATH:"
    [ "${tmp}" != "${tmp#*:$1:}" ]
}

prepend_PATH () {
    has_PATH "$1" || PATH="$1:$PATH"
}

append_PATH () {
    has_PATH "$1" || PATH="$PATH:$1"
}

prepend_PATH /usr/local/bin
prepend_PATH ~/.local/bin
prepend_PATH ~/bin
prepend_PATH /usr/lib/ccache
append_PATH /usr/sbin
append_PATH /sbin
append_PATH /usr/local/games
append_PATH /usr/games
export PATH