fix vpn host naming
[distro-setup] / filesystem / etc / profile.d / environment.sh
index 80a1d5ae911660b9a799199b18acbeb9c0dbc206..8463ea13dcea3a0ce104f2fc46477ce7475c011a 100644 (file)
@@ -1,4 +1,8 @@
 #!/bin/sh
+
+# Exports here get inherited by X, that is the only reason to do things
+# here. However, they do not get sent with sl().
+
 if [ -f $HOME/path-add-function ]; then
   . $HOME/path-add-function
   path-add /usr/sbin /usr/local/sbin /a/exe /a/opt/bin
@@ -77,8 +81,9 @@ if [ -f /etc/fedora-release ]; then
   fi
 fi
 
-# and broken again. see /usr/lib/systemd/user-environment-generators/90gpg-agent
-export GPG_AGENT_INFO=$XDG_RUNTIME_DIR/gnupg/S.gpg-agent:0:1
+# 2020: and broken again. see /usr/lib/systemd/user-environment-generators/90gpg-agent.
+# 2022: not sure exactly what this fixed, but gpg seems to work now without it.
+#export GPG_AGENT_INFO=$XDG_RUNTIME_DIR/gnupg/S.gpg-agent:0:1
 
 # and now trisquel9 + mate + i3 has broken ssh agent. I've had to fix
 # ssh or gpg agent like 10 times in different distros, and once again, i
@@ -90,32 +95,52 @@ export GPG_AGENT_INFO=$XDG_RUNTIME_DIR/gnupg/S.gpg-agent:0:1
 # but not override existing things because theres stuff like PWD. This
 # doesn't set SSH_AGENT_PID, but apparently its not needed anymore.
 # Note: what a huge pita to write this in posix shell.
-if test "$EUID" && [ "$EUID" != 0 ]; then
-  _sysenv=$(mktemp)
-  _sysenvnames=$(mktemp)
-  _unsetnames=$(mktemp)
-  if systemctl --user show-environment >$_sysenv 2>/dev/null; then
-    grep -o '^[^=]*' $_sysenv | sort > $_sysenvnames
-    env -0 | grep -zo '^[^=]*' | xargs -0 printf "%s\n" | sort | \
-      comm --nocheck-order -13 - $_sysenvnames >$_unsetnames
-    while read -r unsetname; do
-      while read -r sysenv; do
-        case "$sysenv" in
-          "$unsetname"*) eval export "$sysenv" ;;
-        esac
-      done < $_sysenv
-    done < $_unsetnames
-    rm -f $_tmpf
+# update: disabled this hackery since I'm not using it in t11
+# if test "$EUID" && [ "$EUID" != 0 ]; then
+#   _sysenv=$(mktemp)
+#   _sysenvnames=$(mktemp)
+#   _unsetnames=$(mktemp)
+#   if systemctl --user show-environment >$_sysenv 2>/dev/null; then
+#     grep -o '^[^=]*' $_sysenv | sort > $_sysenvnames
+#     env -0 | grep -zo '^[^=]*' | xargs -0 printf "%s\n" | sort | \
+  #       comm --nocheck-order -13 - $_sysenvnames >$_unsetnames
+#     while read -r unsetname; do
+#       while read -r sysenv; do
+#         case "$sysenv" in
+#           "$unsetname"*) eval export "$sysenv" ;;
+#         esac
+#       done < $_sysenv
+#     done < $_unsetnames
+#     rm -f $_tmpf
+#   fi
+# fi
+
+
+# i use the x11 prompt for ssh key use which doesnt work
+# within an ssh session (perhaps there is some way).
+# Anyways, there is usually no need for an agent to
+# do a 1-off ssh from a remote machine.
+if ! test "$SSH_CLIENT"; then
+  # and it seems that if we log into mate, it screws up the systemd env var anyways.
+  for _file in $(pgrep -a '^ssh-agent$' | sed -r 's/.*-a *([^ ]+).*/\1/'); do
+    if test -O "$_file"; then
+      export SSH_AUTH_SOCK="$_file"
+      break
+    fi
+  done
+
+  # in t11, user ssh-agent once again stopped working, it isn't started anymore
+  # by i3. So, enough is enough, I just made a service that will try to
+  # start it all the time for the user. If the var isn't set by the above,
+  # just set them to the values I know are in the service.
+  if ! test "$SSH_AUTH_SOCK"; then
+    if [ "$EUID" = 0 ]; then
+      export SSH_AUTH_SOCK=/run/openssh_agent
+    elif [ "$EUID" = 1000 ]; then
+      export SSH_AUTH_SOCK=$HOME/openssh_agent
+    fi
   fi
 fi
-# and it seems that if we log into mate, it screws up the systemd env var anyways.
-for _file in $(pgrep -a '^ssh-agent$' | sed -r 's/.*-a *([^ ]+).*/\1/'); do
-  if test -O "$_file"; then
-    export SSH_AUTH_SOCK="$_file"
-    break
-  fi
-done
-
 
 # background:
 # ubuntu has 002 for non-system users, debian has 022.  002 makes groups
@@ -134,6 +159,8 @@ done
 # group, so if you copy files there with exact perms, that is probably
 # not what you want. I don't use a system like that, so I don't
 # care.
+#
+# Note: duplicated in .bashrc
 umask 022
 # this is how we could test for non-system user