在 bash 中,例如 /etc/bashrc 中实现的一个常见函数是,如果路径尚未在中的元素中列出,则pathmunge()
该函数会将路径附加或添加到其中。PATH
PATH
例子:
$ echo $PATH
/bin:/usr/bin
$ pathmunge /home/me/bin
$ echo $PATH
/home/me/bin:/bin:/usr/bin
$ pathmunge /home/me/bin
$ echo $PATH
/home/me/bin:/bin:/usr/bin
添加路径的简单方法如下:
$ echo $PATH
/bin:/usr/bin
$ PATH=/home/me/bin:$PATH
$ echo $PATH
/home/me/bin:/bin:/usr/bin
$ PATH=/home/me/bin:$PATH
$ echo $PATH
/home/me/bin:/home/me/bin:/bin:/usr/bin
我对 csh 了解甚少,我只想做一件简单的事情:如果路径尚未存在,则将其添加到列表中。我知道 csh 使用path
而不是 ,PATH
并且这是一个合适的 csh 数组。
也许 csh 有一些类似的数组函数if !(foobar in $path) then blah
,使得这样的函数变得pathmunge()
没有必要。在这种情况下,这是正确的答案。
答案1
我最终采用了将 shell 放入 bash 的解决方案,因为在“csh”语言中似乎无法解决这个问题。
~/bin/munge_echo
:
#!/bin/bash
function munge() {
case ":$1:" in
*:$2:*) echo "$1" ;;
::) echo "$2" ;;
*) echo "$2:$1" ;;
esac
}
munged="$1"
shift
while [ -n "$1" ]; do
munged="$(munge "$munged" "$1")"
shift
done
echo "$munged"
~/.csh
:
setenv PATH `~/bin/munge_echo "$PATH" ~/.local/bin ~/bin`