diff --git a/.local/bin b/.local/bin
index bcd40f9a..5f7ddc31 160000
--- a/.local/bin
+++ b/.local/bin
@@ -1 +1 @@
-Subproject commit bcd40f9a27e7e9058ecadc928337f8e340333b43
+Subproject commit 5f7ddc31411bd302339ec287498d6fe7c4501f8e
diff --git a/.profile b/.profile
index 4ad168b3..b8a6fd90 100755
--- a/.profile
+++ b/.profile
@@ -33,11 +33,24 @@ else
 	export EDITOR="vi"
 fi
 
-# Patch PATH if necessary
-# This string substitution is POSIX-compliant
-localbindir="$HOME/.local/bin"
-[ "${PATH#*$localbindir}" == "$PATH" ] && export PATH="$PATH:$localbindir"
-unset localbindir
+# Patch PATH
+desiredpath="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/games:/usr/games:$HOME/.local/bin"
+# Here, we eliminate the parts of the environment-supplied PATH that we already
+# plan on using
+IFS=":"
+for path in $desiredpath; do
+	PATH="${PATH#*$path}"
+done
+unset IFS
+# We remove any prepending colons to make it appear neater
+while [ "${PATH:0:1}" == ":" ]; do
+	PATH="${PATH:1}"
+done
+# Then finally set up our path
+PATH="$desiredpath:$PATH"
+
+# Grab bash_completion, if it exists
+[ -f "/etc/profile.d/bash_completion.sh" ] && . "/etc/profile.d/bash_completion.sh"
 
 # If emerge exists, add emerge aliases
 if `which emerge > /dev/null 2>&1` ; then
@@ -97,7 +110,7 @@ alias waitwhat='echo $?'
 
 # Set up a default PS1
 # This *should* work for all terminals. I know it works on ksh
-_ps1() {
+function _ps1() {
 	exitcode="$?"
 	r="\e[0m"
 	fg_blue="\e[34m"