I think that there’s something more going on, because most of this shouldn’t be necessary, and some of it shouldn’t be in $PATH at all (like /opt/local/share/man; that belongs in $MANPATH). In `~/.bashrc`, you should be specifying something like:
```bash export PATH=$HOME/bin:/opt/local/bin:/opt/local/sbin:/usr/X11/bin:$PATH ``` In `~/.bash_profile`, you should be doing something like: ```bash [[ -s $HOME/.bashrc ]] && source $HOME/.bashrc ``` See https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html, but in general, Terminal.app launches `/bin/bash -i`, not `/bin/bash --login`, which means that `~/.bash_profile` wouldn’t be loaded. It should be unnecessary to add `/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin` anywhere, because those should be coming from core configuration (I think that it might be /etc/environment in older versions of macOS). Strictly speaking, /opt/local/sbin should be *before* /usr/local/sbin and /usr/sbin, but *after* everything else. Back when I was using zsh (I’m using fish now), I had functions to help me do this[1]. It would be possible to have similar functions for bash, although you’d probably be using `sed` to clean up some values. It would also be instructive to look at what chruby is doing for path reset to remove values[2]. As far as re-sourcing `~/.bash_profile` because I added or updated functions, I would usually *not* put them in `~/.bash_profile` or `~/.bashrc`, but in a `~/.bashrc.d/` directory that `~/.bashrc` would source with: ```bash for src in "$HOME/.bashrc.d/*"; do [[ -s "${src}" ]] && source "${src}" done ``` Then I could edit those scripts independently and not end up with doubled environment configurations. If I had environment configuration in those sourced scripts, I would *definitely* have guards: ```bash if ! echo $PATH | grep -q /opt/local/bin; then PATH=/opt/local/bin:$PATH fi ``` I hope that helps you get things sorted out. -a [1] https://github.com/halostatue/ryanb-dotfiles-fork/blob/master/zsh/functions/unique-path [2] https://github.com/postmodern/chruby/blob/master/share/chruby/chruby.sh#L13-L28 On Mon, Mar 20, 2023 at 1:13 PM chilli.names...@gmail.com < chilli.names...@gmail.com> wrote: > Also, for whatever reason, Mountain Lion does not source .bash_profile on > login. So on that box, I have to source it after I login and whenever I > sudo. I guess I could add a script to source it at login, but it's not a > big deal. > > > On Mar 20, 2023, at 13:10, chilli.names...@gmail.com wrote: > > > > Really? Do you never edit your .bash_profile to add functions? > > On Mar 20, 2023, at 13:01, Will Senn <will.s...@gmail.com> wrote: > > > bash_profile is executed for login shells, so it shouldn't be sourced more > than once per login. > > On 3/20/23 11:49 AM, chilli.names...@gmail.com wrote: > > I was checking. echo $PATH reports correctly. If I source the > .bash_profile more than once, however, I get duplicates. > > On Mar 20, 2023, at 12:44, Will Senn <will.s...@gmail.com> > <will.s...@gmail.com> wrote: > > > Sounds like you should check $PATH before and after the change to see what > it's actually doing. Whatever you want to run, say your version of ruby in > /some/dir/ruby, needs to appear earlier in the path than the system > version, say /usr/bin/ruby... period. It's not rocket science. However, > it's not totally straightforward, either. Some updated command locations > require that the shell be rehashed after changing the path cuz the shell > may cache the location - hash -r, or equivalent. That said, it's usually > pilot error messing with path. > > echo "PATH: $PATH" > before setting and after to see what's going on. then it's just a matter > of figuring out which ruby comes first. > > Will > > On 3/20/23 11:33 AM, chilli.names...@gmail.com wrote: > > This is the only way I can get it to work right without error > > export > PATH="$PATH:$HOME/bin:/opt/local/bin:/opt/local/sbin:/opt/local/share/man:/usr/X11/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" > > > It doesn't like :$PATH at the end > > > On Mar 20, 2023, at 09:27, chilli.names...@gmail.com wrote: > > > I am closer, but my $PATH is still messed up. > > This in .bash_profile > > export > PATH=$HOME/bin:/opt/local/bin:/opt/local/sbin:/opt/local/share/man:/usr/X11/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH > > > gets me this when I source it > > *env: bash: No such file or directory* > dude@mac:~/Extra/sand$ echo $PATH > > /Users/dude/bin:/opt/local/bin:/opt/local/sbin:/opt/local/share/man:/usr/X11/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin: > > > notice the trailing ":" > removing it gets me a no such directory error for "/sbin$PATH" > > > On Mar 20, 2023, at 09:04, Mark Anderson <e...@emer.net> <e...@emer.net> > wrote: > > > Yeah, this is the answer. You always want `/opt/local/bin/` to be near the > start of your path. Only stuff that you specifically want to override > MacPorts should be before it. (Examples of things you may want before: RVM > or NVM or any of the version managers that put things in your home) > > Thanks, > —Mark > _______________________ > Mark E. Anderson <e...@emer.net> > Find me on LinkedIn <https://www.linkedin.com/in/markemer/> > > > On Sat, Mar 11, 2023 at 5:57 PM Austin Ziegler <halosta...@gmail.com> > wrote: > >> Change that to >> >> export >> PATH=$HOME/bin:/opt/local/bin:/opt/local/sbin:/opt/local/share/man:/usr/X11/bin:$PATH >> >> -a >> >> On Mar 11, 2023, at 14:03, chilli.names...@gmail.com wrote: >> >> >> Thank you, I will check that >> >> I have >> >> export >> PATH=$PATH:$HOME/bin:/opt/local/bin:/opt/local/sbin:/opt/local/share/man:/usr/X11/bin >> >> >> in my .bash_profile, but echo $PATH shows what you expected: >> >> dude@mac:~$ echo $PATH >> >> /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/dude/bin:/opt/local/bin:/opt/local/sbin... >> >> >> ok, I have something new to work out. >> >> On Mar 11, 2023, at 13:49, Austin Ziegler <halosta...@gmail.com> wrote: >> >> >> No problem. The system ruby showing up instead of MacPorts-installed Ruby >> would be *probably* because your $PATH has `/opt/local/bin` *after* >> `/usr/bin`. Typically, one wants to have Macports (or other third-party >> package systems) *before* /usr/local/bin and /usr/bin. >> >> -a >> >> On Sat, Mar 11, 2023 at 1:46 PM chilli.names...@gmail.com < >> chilli.names...@gmail.com> wrote: >> >>> >>> >>> root@mac:~$ ruby -S gem install coltrane >>> ERROR: Error installing coltrane: >>> activesupport requires Ruby version >= 2.7.0. >>> >>> >>> Unfortunately, Mojave: >>> ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18] >>> >>> So I install ruby 2.7.7 >>> >>> root@mac:~$ port -vsN install ruby27 >>> >>> .... >>> ---> Cleaning ruby27 >>> ---> Removing work directory for ruby27 >>> ---> Updating database of binaries >>> ---> Scanning binaries for linking errors >>> ---> No broken files found. >>> ---> No broken ports found. >>> ---> Some of the ports you installed have notes: >>> ruby27 has the following notes: >>> To make this the default Ruby (i.e., the version run by the 'ruby', >>> 'gem' or 'bundle' commands), run: >>> sudo port select --set ruby ruby27 >>> root@mac:~$ port select --set ruby ruby27 >>> Selecting 'ruby27' for 'ruby' succeeded. 'ruby27' is now active. >>> root@mac:~$ ruby -S gem install coltrane >>> ERROR: Error installing coltrane: >>> activesupport requires Ruby version >= 2.7.0. >>> >>> >>> grrr... it's still trying to use /usr/bin/ruby >>> >>> but >>> >>> root@mac:~$ /opt/local/bin/ruby -S gem install coltrane >>> >>> >>> installed it. >>> >>> idky my ruby $PATH seems stuck on /usr/bin/ruby, but thanks to your tip, >>> I was able to install coltrane, and it seems to be working. Neato CLI >>> music utility. >>> >>> Thank you, Austin! >>> >>> On Mar 11, 2023, at 13:14, Austin Ziegler <halosta...@gmail.com> wrote: >>> >>> >>> I don’t use Macports Ruby (I use `ruby-install`), but try this: >>> >>> sudo ruby -S gem install coltrane >>> >>> Ruby since Ruby 2.x has included Rubygems, and since a bit later than >>> that, Bundler. >>> >>> -a >>> >>> On Sat, Mar 11, 2023 at 1:06 PM chilli.names...@gmail.com < >>> chilli.names...@gmail.com> wrote: >>> >>>> Hi, >>>> I need a quick ruby primer, please. >>>> >>>> I'd like to install this, >>>> https://github.com/pedrozath/coltrane >>>> >>>> sudo gem install coltrane >>>> >>>> >>>> won't work because I'm on Mojave with an an ancient ruby and this >>>> requires ruby 2.7 or above. >>>> >>>> sudo port -vsN install ruby >>>> >>>> >>>> installs ruby18 by default >>>> >>>> sudo port -vsN install ruby27 >>>> sudo port select --set ruby ruby27 >>>> >>>> >>>> installs, but gem still complains. >>>> >>>> just guessing at this point: >>>> >>>> port -vsN install rb-rubygems >>>> >>>> >>>> reinstalls ruby18 >< >>>> >>>> >>>> Help, please. >>>> >>> >>> >>> -- >>> Austin Ziegler • halosta...@gmail.com • aus...@halostatue.ca >>> http://www.halostatue.ca/ • http://twitter.com/halostatue >>> >>> >> >> -- >> Austin Ziegler • halosta...@gmail.com • aus...@halostatue.ca >> http://www.halostatue.ca/ • http://twitter.com/halostatue >> >> > > -- Austin Ziegler • halosta...@gmail.com • aus...@halostatue.ca http://www.halostatue.ca/ • http://twitter.com/halostatue