Michael Albinus <michael.albi...@gmx.de> writes: > Just for the records: I have seen also your first message. Since the > times are busy, I have postponed to answer.
No problem! > However, I agree we need to do something in this area. Yes. > Well, where does $PATH come from? Should it be your local $PATH on the > machine you're calling docker? It gets executed in the docker container, see: > Note, that your change wouldn't do anything. The $PATH on the docker > instance is computed in the remote shell, based on tramp-remote-path. If > you want to change something, it must be there. > This mechanism is questionable in general. There is already the Emacs > bug#61926, which asks for something else. This request is currently > pending (due to other prioritzed work); when I'll work on this I will > also take your request into account. If you like, you could also send a > message to that bug number, requesting proper changes for docker. Just > in case nobody forgets it. Yes please. I have an updated elisp script to reproduce the problem. Here is it's output: ``` $ emacs -Q --batch --load config.el emacs-version: 30.0.50 tramp-version: 2.7.0-pre using the docker haskell image expected path is: ["PATH=/root/.cabal/bin:/root/.local/bin:/opt/ghc/9.4.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","LANG=C.UTF-8"] Tramp: Sending command ‘exec docker exec -it nifty_davinci /bin/sh -i’ Tramp: Found remote shell prompt on ‘nifty_davinci’ path is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ``` And the script: ``` (require 'tramp) ;; pre-require things that were making loading messages that clutter up stdout (require 'em-alias) (require 'em-banner) (require 'em-basic) (require 'em-cmpl) (require 'em-extpipe) (require 'em-glob) (require 'em-hist) (require 'em-ls) (require 'em-pred) (require 'em-prompt) (require 'em-script) (require 'em-term) (require 'em-unix) (setq edebug-print-length 500) (setq tramp-verbose 7) (setq existing-haskell-container-name "nifty_davinci") (defun start-new-haskell-container () """ returns container id""" (string-trim (shell-command-to-string "docker run -i --rm --detach haskell:slim@sha256:68280eb4fd3d4ee1b62cf40619fd6e956a741f693ef53e9dd4168d2c721880f5"))) (setq docker-container-id (or existing-haskell-container-name (start-new-haskell-container))) (message (format "emacs-version: %s" emacs-version)) (message (format "tramp-version: %s" tramp-version)) (message "") (message "using the docker haskell image") (message "expected path is:") (message (string-trim (shell-command-to-string (format "docker inspect --format='{{json .Config.Env}}' %s" docker-container-id)))) (let ((default-directory (concat "/docker:" docker-container-id ":")) (tramp-remote-path '(tramp-own-remote-path))) (tramp-cleanup-all-connections) (message (concat "path is: " (truncate-string-to-width (eshell-command-result "echo $PATH") 100)))) ``` Thank you.