On Fri, Jul 09, 2021 at 11:40:36PM +0200, john doe wrote: > On 7/9/2021 9:54 PM, Charles Curley wrote: > > # if [[ ! ${PATH} =~ .*/home/charles/.local/bin.* ]] ; then > > [[ $PATH =~ \/home\/charles\/... ]] && echo match || echo nomatch > > That is, escaping the backslash.
First, you are escaping forward slashes, *using* backslashes. Second, you don't need to escape slashes. They aren't special in an ERE. Third, you *do* need to escape the dots. Those *are* special in an ERE. Fourth, you don't actually need an ERE here. For a simple substring match, you can just use [[ $PATH != *substring* ]] But as I said in a different message, if you're going down this road (which is more typical for sh than for bash), you will want to delimit both the left-hand and right-hand sides with extra : characters. Without those, you will get false positives. For example, if your PATH contains /usr/bin and you try to check whether it contains /bin, you'll get a match, because /bin is literally part of the /usr/bin component. Anyway, that's why I called that an ugly hack.