When launched at system start-up, the Emacs daemon doesn't pick up modifications to the PATH introduced by shell initialization scripts.
Emacswiki suggests to use this function to update Emacs' PATH,
(defun set-exec-path-from-shell-PATH () "Set up Emacs' `exec-path' and PATH environment variable to match that used by the user's shell. This is particularly useful under Mac OS X and macOS, where GUI apps are not started from a shell." (interactive) (let ((path-from-shell (replace-regexp-in-string "[ \t\n]*$" "" (shell-command-to-string "$SHELL --login -i -c 'echo $PATH'" )))) (setenv "PATH" path-from-shell) (setq exec-path (split-string path-from-shell path-separator)))) (set-exec-path-from-shell-PATH) but it returns some errors:
bash: cannot set terminal process group (-1): Inappropriate ioctl for device bash: no job control in this shell stty: 'standard input': Inappropriate ioctl for device As far as I understand (my main reference), since I want to run Bash in interactive mode (so that it loads ~/.bashrc) I should use start-file-process(-shell-command) to invoke the shell process. However, I can't figure out how to store the output of the command in a string when I do so.