On Windows I use Cygwin extensively. So I open a lot of login shells. However these shells are sometimes slow to load, especially when my host is busy with other jobs.
While editing my ~/.bash_profile
I noticed code like this:
if [ -d "some path element" ]; then PATH="some path element:$PATH" fi
This is a common idiom. However, it is making a separate fork to /bin/test
every time.
A simple improvement:
if [[ -d "some path element" ]]; then PATH="some path element:$PATH" fi
A little trying it out and the verdict: Wow, big improvement.
2 comments:
Recent versions of bash have test, [ and [[ implemented as built-ins. This has been true for a while. Are you not using bash?
Signed,
A fellow cygwin jpmorganite
P.S. We find the biggest issues are populating /etc/passwd and /etc/group and dealing with PATH entries on network drives for which the cost of a forked test is completely immaterial.
It it isn't the fork, I'm unsure why this is. I found this result empirically.
Post a Comment