GNU bug report logs - #74739
31.0.50; eshell/which doesn't return a non-zero exit code on not finding a file

Previous Next

Package: emacs;

Reported by: the_wurfkreuz <the_wurfkreuz <at> proton.me>

Date: Sun, 8 Dec 2024 16:31:02 UTC

Severity: normal

Found in version 31.0.50

Done: Jim Porter <jporterbugs <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 74739 in the body.
You can then email your comments to 74739 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#74739; Package emacs. (Sun, 08 Dec 2024 16:31:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to the_wurfkreuz <the_wurfkreuz <at> proton.me>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 08 Dec 2024 16:31:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Subject: 31.0.50;
 eshell/which doesn't return a non-zero exit code on not finding a file
Date: Sun, 08 Dec 2024 16:30:19 +0000
[Message part 1 (text/plain, inline)]
eshell/which doesn't return a non-zero exit code on not finding a file. Yet it sends the output to stderr. It looks like there is an inconsistency.

Steps to reproduce:

~ $ which test-file
which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
~ $ which test-file | grep theoretical
which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
~ $ echo $?
0
~ $ which test-file 2>&1 | grep theoretical
~ [1] $

In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.41, cairo version 1.18.0) of 2024-12-06 built on
wurfkreuz-B650M-PG-Riptide
Repository revision: 9ddec89e422d0dd6e9069731b8f2dd2c90aa5607
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12302006
System Description: Ubuntu 24.04.1 LTS

Configured using:
'configure --with-native-compilation=aot --with-tree-sitter --with-gif
--with-png --with-jpeg --with-tiff --with-imagemagick
--with-x-toolkit=gtk3 --with-xwidgets --without-rsvg
'WEBKIT_CFLAGS=-I/usr/include/webkitgtk-4.1 -I/usr/include/glib-2.0
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gtk-3.0
-I/usr/include/pango-1.0 -I/usr/include/harfbuzz
-I/usr/include/freetype2 -I/usr/include/libpng16
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi
-I/usr/include/cairo -I/usr/include/pixman-1
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu
-I/usr/include/webp -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0
-I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include
-I/usr/include/libsoup-3.0 -I/usr/include/sysprof-6 -pthread '
'WEBKIT_LIBS=-lwebkit2gtk-4.1 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0
-lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo
-lgdk_pixbuf-2.0 -lsoup-3.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread
-lglib-2.0 -lgio-2.0 -ljavascriptcoregtk-4.1 -lgobject-2.0 -lglib-2.0 '
CPPFLAGS=-I/usr/lib/gcc/x86_64-linux-gnu/14/include --with-mailutils'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK
JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB

Important settings:
value of $LC_MONETARY: be_BY.UTF-8
value of $LC_NUMERIC: be_BY.UTF-8
value of $LC_TIME: be_BY.UTF-8
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
windmove-mode: t
savehist-mode: t
eshell-syntax-highlighting-global-mode: t
global-evil-collection-unimpaired-mode: t
evil-collection-unimpaired-mode: t
global-evil-surround-mode: t
evil-surround-mode: t
evil-mode: t
evil-local-mode: t
global-org-modern-mode: t
envrc-global-mode: t
envrc-mode: t
eat-eshell-visual-command-mode: t
eat-eshell-mode: t
shackle-mode: t
popper-echo-mode: t
popper-mode: t
global-git-commit-mode: t
magit-auto-revert-mode: t
all-the-icons-completion-mode: t
marginalia-mode: t
vertico-mode: t
global-fish-completion-mode: t
fish-completion-mode: t
corfu-popupinfo-mode: t
corfu-history-mode: t
corfu-echo-mode: t
global-corfu-mode: t
corfu-mode: t
yas-global-mode: t
yas-minor-mode: t
which-key-mode: t
global-treesit-auto-mode: t
global-undo-tree-mode: t
undo-tree-mode: t
delete-selection-mode: t
global-auto-revert-mode: t
save-place-mode: t
electric-pair-mode: t
recentf-mode: t
global-display-line-numbers-mode: t
display-line-numbers-mode: t
override-global-mode: t
tooltip-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tab-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
minibuffer-regexp-mode: t
line-number-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t

Load-path shadows:
/home/wurfkreuz/.emacs.d/elpa/eat/eat hides /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat
/home/wurfkreuz/.emacs.d/elpa/eat/eat-tests hides /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat-tests
/home/wurfkreuz/.emacs.d/elpa/transient-20241201.1616/transient hides /home/wurfkreuz/.source/emacs/lisp/transient
~/.source/org-mode/lisp/org-element-ast hides /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
~/.source/org-mode/lisp/org-list hides /home/wurfkreuz/.source/emacs/lisp/org/org-list
~/.source/org-mode/lisp/org-clock hides /home/wurfkreuz/.source/emacs/lisp/org/org-clock
~/.source/org-mode/lisp/ob-eval hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
~/.source/org-mode/lisp/ob-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
~/.source/org-mode/lisp/ob-table hides /home/wurfkreuz/.source/emacs/lisp/org/ob-table
~/.source/org-mode/lisp/ol-rmail hides /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
~/.source/org-mode/lisp/ol-gnus hides /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
~/.source/org-mode/lisp/ob-shell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
~/.source/org-mode/lisp/ol-irc hides /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
~/.source/org-mode/lisp/ob-exp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
~/.source/org-mode/lisp/ob-tangle hides /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
~/.source/org-mode/lisp/ob-julia hides /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
~/.source/org-mode/lisp/ob-fortran hides /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
~/.source/org-mode/lisp/ob-haskell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
~/.source/org-mode/lisp/org-refile hides /home/wurfkreuz/.source/emacs/lisp/org/org-refile
~/.source/org-mode/lisp/org-timer hides /home/wurfkreuz/.source/emacs/lisp/org/org-timer
~/.source/org-mode/lisp/org-version hides /home/wurfkreuz/.source/emacs/lisp/org/org-version
~/.source/org-mode/lisp/org-attach-git hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
~/.source/org-mode/lisp/ob-awk hides /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
~/.source/org-mode/lisp/ob-C hides /home/wurfkreuz/.source/emacs/lisp/org/ob-C
~/.source/org-mode/lisp/ol-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
~/.source/org-mode/lisp/oc-basic hides /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
~/.source/org-mode/lisp/org-inlinetask hides /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
~/.source/org-mode/lisp/ob-ref hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
~/.source/org-mode/lisp/ob-emacs-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
~/.source/org-mode/lisp/ob-sed hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
~/.source/org-mode/lisp/org-archive hides /home/wurfkreuz/.source/emacs/lisp/org/org-archive
~/.source/org-mode/lisp/ob-lua hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
~/.source/org-mode/lisp/org-goto hides /home/wurfkreuz/.source/emacs/lisp/org/org-goto
~/.source/org-mode/lisp/org-fold-core hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core
~/.source/org-mode/lisp/oc-csl hides /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
~/.source/org-mode/lisp/org hides /home/wurfkreuz/.source/emacs/lisp/org/org
~/.source/org-mode/lisp/ob-forth hides /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
~/.source/org-mode/lisp/ox-koma-letter hides /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
~/.source/org-mode/lisp/ob-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
~/.source/org-mode/lisp/ol-info hides /home/wurfkreuz/.source/emacs/lisp/org/ol-info
~/.source/org-mode/lisp/ol-docview hides /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
~/.source/org-mode/lisp/ox-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
~/.source/org-mode/lisp/org-crypt hides /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
~/.source/org-mode/lisp/ob-makefile hides /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
~/.source/org-mode/lisp/org-plot hides /home/wurfkreuz/.source/emacs/lisp/org/org-plot
~/.source/org-mode/lisp/ob-ocaml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
~/.source/org-mode/lisp/org-faces hides /home/wurfkreuz/.source/emacs/lisp/org/org-faces
~/.source/org-mode/lisp/org-datetree hides /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
~/.source/org-mode/lisp/ob-lilypond hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
~/.source/org-mode/lisp/ob-octave hides /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
~/.source/org-mode/lisp/ob-sass hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
~/.source/org-mode/lisp/ob-maxima hides /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
~/.source/org-mode/lisp/ob-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
~/.source/org-mode/lisp/ob-python hides /home/wurfkreuz/.source/emacs/lisp/org/ob-python
~/.source/org-mode/lisp/org-keys hides /home/wurfkreuz/.source/emacs/lisp/org/org-keys
~/.source/org-mode/lisp/org-pcomplete hides /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
~/.source/org-mode/lisp/ob-sqlite hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
~/.source/org-mode/lisp/org-duration hides /home/wurfkreuz/.source/emacs/lisp/org/org-duration
~/.source/org-mode/lisp/org-id hides /home/wurfkreuz/.source/emacs/lisp/org/org-id
~/.source/org-mode/lisp/ob-plantuml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
~/.source/org-mode/lisp/org-macro hides /home/wurfkreuz/.source/emacs/lisp/org/org-macro
~/.source/org-mode/lisp/ob-ruby hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
~/.source/org-mode/lisp/ob-groovy hides /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
~/.source/org-mode/lisp/ox-beamer hides /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
~/.source/org-mode/lisp/ob-comint hides /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
~/.source/org-mode/lisp/ox-odt hides /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
~/.source/org-mode/lisp/ob-calc hides /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
~/.source/org-mode/lisp/ob-R hides /home/wurfkreuz/.source/emacs/lisp/org/ob-R
~/.source/org-mode/lisp/org-loaddefs hides /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
~/.source/org-mode/lisp/ol-man hides /home/wurfkreuz/.source/emacs/lisp/org/ol-man
~/.source/org-mode/lisp/org-capture hides /home/wurfkreuz/.source/emacs/lisp/org/org-capture
~/.source/org-mode/lisp/ol-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
~/.source/org-mode/lisp/ox-texinfo hides /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
~/.source/org-mode/lisp/ox-ascii hides /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
~/.source/org-mode/lisp/org-element hides /home/wurfkreuz/.source/emacs/lisp/org/org-element
~/.source/org-mode/lisp/org-macs hides /home/wurfkreuz/.source/emacs/lisp/org/org-macs
~/.source/org-mode/lisp/org-compat hides /home/wurfkreuz/.source/emacs/lisp/org/org-compat
~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
~/.source/org-mode/lisp/ob-js hides /home/wurfkreuz/.source/emacs/lisp/org/ob-js
~/.source/org-mode/lisp/ol-bbdb hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
~/.source/org-mode/lisp/org-fold hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold
~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
~/.source/org-mode/lisp/oc-biblatex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
~/.source/org-mode/lisp/ob-perl hides /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
~/.source/org-mode/lisp/ob-screen hides /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
~/.source/org-mode/lisp/org-ctags hides /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
~/.source/org-mode/lisp/org-table hides /home/wurfkreuz/.source/emacs/lisp/org/org-table
~/.source/org-mode/lisp/org-persist hides /home/wurfkreuz/.source/emacs/lisp/org/org-persist
~/.source/org-mode/lisp/ob-scheme hides /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
~/.source/org-mode/lisp/org-agenda hides /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
~/.source/org-mode/lisp/oc-natbib hides /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
~/.source/org-mode/lisp/ob-processing hides /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
~/.source/org-mode/lisp/org-habit hides /home/wurfkreuz/.source/emacs/lisp/org/org-habit
~/.source/org-mode/lisp/org-entities hides /home/wurfkreuz/.source/emacs/lisp/org/org-entities
~/.source/org-mode/lisp/ob-java hides /home/wurfkreuz/.source/emacs/lisp/org/ob-java
~/.source/org-mode/lisp/ob-gnuplot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
~/.source/org-mode/lisp/ol-w3m hides /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
~/.source/org-mode/lisp/ox-org hides /home/wurfkreuz/.source/emacs/lisp/org/ox-org
~/.source/org-mode/lisp/ox-man hides /home/wurfkreuz/.source/emacs/lisp/org/ox-man
~/.source/org-mode/lisp/org-lint hides /home/wurfkreuz/.source/emacs/lisp/org/org-lint
~/.source/org-mode/lisp/org-protocol hides /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
~/.source/org-mode/lisp/ob-core hides /home/wurfkreuz/.source/emacs/lisp/org/ob-core
~/.source/org-mode/lisp/ol-eww hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
~/.source/org-mode/lisp/ox-publish hides /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
~/.source/org-mode/lisp/org-footnote hides /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
~/.source/org-mode/lisp/ox-md hides /home/wurfkreuz/.source/emacs/lisp/org/ox-md
~/.source/org-mode/lisp/org-feed hides /home/wurfkreuz/.source/emacs/lisp/org/org-feed
~/.source/org-mode/lisp/ol-doi hides /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
~/.source/org-mode/lisp/ox-html hides /home/wurfkreuz/.source/emacs/lisp/org/ox-html
~/.source/org-mode/lisp/org-src hides /home/wurfkreuz/.source/emacs/lisp/org/org-src
~/.source/org-mode/lisp/ob-org hides /home/wurfkreuz/.source/emacs/lisp/org/ob-org
~/.source/org-mode/lisp/oc-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
~/.source/org-mode/lisp/org-mouse hides /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
~/.source/org-mode/lisp/org-colview hides /home/wurfkreuz/.source/emacs/lisp/org/org-colview
~/.source/org-mode/lisp/ol-mhe hides /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
~/.source/org-mode/lisp/ob-lob hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
~/.source/org-mode/lisp/ox-icalendar hides /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
~/.source/org-mode/lisp/org-tempo hides /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
~/.source/org-mode/lisp/ob-matlab hides /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
~/.source/org-mode/lisp/ob-sql hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
~/.source/org-mode/lisp/ob-dot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
~/.source/org-mode/lisp/ob-ditaa hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
~/.source/org-mode/lisp/ob-clojure hides /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
~/.source/org-mode/lisp/org-indent hides /home/wurfkreuz/.source/emacs/lisp/org/org-indent
~/.source/org-mode/lisp/org-cycle hides /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
~/.source/org-mode/lisp/org-mobile hides /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
~/.source/org-mode/lisp/org-num hides /home/wurfkreuz/.source/emacs/lisp/org/org-num
~/.source/org-mode/lisp/ob-css hides /home/wurfkreuz/.source/emacs/lisp/org/ob-css
~/.source/org-mode/lisp/org-attach hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach
~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox

Features:
(shadow sort mail-extr emacsbug tramp-cmds pulse color help-fns
radix-tree pcmpl-unix windmove flymake-shellcheck python bug-reference
org-bullets org-indent dired-aux toc-org image-file image-converter
oc-basic ol-eww eww vtable mule-util url-queue mm-url ol-rmail ol-mhe
ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom
gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap
nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus
nnheader range ol-docview doc-view jka-compr image-mode exif ol-bibtex
bibtex ol-bbdb ol-w3m ol-doi org-link-doi vc-git vc-dispatcher em-unix
em-term evil-collection-term term disp-table ehelp em-script em-pred
em-ls em-hist em-glob em-extpipe em-basic em-banner em-elecslash eshell
savehist em-tramp eshell-syntax-highlighting em-prompt em-alias
evil-collection-unimpaired evil-collection-debug evil-collection-magit
evil-collection-docker evil-collection-minibuffer evil-collection-org
evil-collection-dired evil-collection annalist evil-org evil-surround
evil evil-integration evil-maps evil-commands reveal evil-jumps
evil-command-window evil-types evil-search evil-ex evil-macros
evil-repeat evil-states evil-core evil-common rect evil-vars org-modern
org-tempo tempo org-drill persist org-agenda org-download org-attach
url-http url-auth url-gw nsm async embark-org org-element org-persist
org-id org-refile org-element-ast inline avl-tree org ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core
ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc
org-loaddefs cal-menu calendar cal-loaddefs org-version org-compat
org-macs eglot external-completion jsonrpc ert ewoc debug backtrace
systemd conf-mode nix-mode nix-repl nix-shell nix-store nix-log
nix-instantiate nix-shebang nix-format nix yaml-mode haskell-mode
haskell-cabal haskell-utils haskell-font-lock haskell-indentation
haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports
haskell-complete-module haskell-ghc-support flymake-proc dabbrev
haskell-customize dockerfile-mode sh-script executable terraform-mode
noutline outline hcl-mode lua-mode go-mode find-file etags fileloop xref
raku-mode raku-repl raku-imenu raku-indent smie raku-font-lock
raku-detect flymake-hadolint flymake envrc inheritenv eat shackle trace
cl-print popper-echo popper transpose-frame magit-bookmark
magit-submodule magit-blame magit-stash magit-reflog magit-bisect
magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
magit-sequence magit-notes magit-worktree magit-tag magit-merge
magit-branch magit-reset magit-files magit-refs magit-status magit
magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
smerge-mode diff-mode track-changes git-commit log-edit message sendmail
yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
mailheader pcvs-util add-log magit-core magit-autorevert magit-margin
magit-transient magit-process magit-mode benchmark magit-git magit-base
magit-section cursor-sensor crm hydra lv with-editor server
all-the-icons-completion all-the-icons-dired all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons embark-consult embark ffap
thingatpt consult bookmark marginalia vertico project zoxide sudo-edit
exec-path-from-shell fish-completion em-cmpl em-dirs esh-mode esh-var
esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
esh-module-loaddefs esh-util cape corfu-popupinfo corfu-history
corfu-echo corfu orderless yasnippet commander f wgrep grep compile
text-property-search which-key docker docker-context docker-volume
docker-network docker-image docker-container docker-faces docker-core
docker-compose docker-process docker-utils tablist advice tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic pp semantic/tag semantic/lex
semantic/fw mode-local find-func cedet dired dired-loaddefs docker-group
transient edmacro kmacro compat dash aio generator s avy clojure-ts-mode
treesit-auto treesit rose-pine-theme undo-tree diff queue delsel
midnight autorevert filenotify saveplace tramp-cache time-stamp tramp-sh
tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
shell pcomplete comint ansi-osc ring parse-time iso8601 time-date
format-spec ansi-color tramp-loaddefs desktop frameset comp comp-cstr
cl-extra help-mode warnings comp-run comp-common elec-pair recentf
tree-widget wid-edit display-line-numbers use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
easy-mmode use-package-core all-the-icons-completion-autoloads
all-the-icons-dired-autoloads all-the-icons-autoloads avy-autoloads
cape-autoloads clojure-ts-mode-autoloads commander-autoloads
corfu-autoloads docker-autoloads aio-autoloads dockerfile-mode-autoloads
eat-autoloads emacs-eat-autoloads finder-inf embark-consult-autoloads
consult-autoloads embark-autoloads envrc-autoloads
eshell-syntax-highlighting-autoloads evil-collection-autoloads
annalist-autoloads evil-org-autoloads evil-surround-autoloads
evil-autoloads exec-path-from-shell-autoloads f-autoloads
fish-completion-autoloads flymake-ansible-lint-autoloads
flymake-hadolint-autoloads flymake-shellcheck-autoloads
go-mode-autoloads goto-chg-autoloads haskell-mode-autoloads
hydra-autoloads inheritenv-autoloads lua-mode-autoloads lv-autoloads
magit-autoloads pcase marginalia-autoloads meow-autoloads
nix-mode-autoloads magit-section-autoloads orderless-autoloads
org-bullets-autoloads org-download-autoloads async-autoloads
org-drill-autoloads org-modern-autoloads persist-autoloads
popper-autoloads pyvenv-autoloads raku-mode-autoloads s-autoloads
shackle-autoloads sudo-edit-autoloads swiper-autoloads ivy-autoloads
systemd-autoloads rx tablist-autoloads terraform-mode-autoloads
dash-autoloads hcl-mode-autoloads toc-org-autoloads transient-autoloads
transpose-frame-autoloads treesit-auto-autoloads undo-tree-autoloads
queue-autoloads vertico-autoloads wgrep-autoloads info
with-editor-autoloads yaml-mode-autoloads yasnippet-autoloads
zoxide-autoloads package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie generate-lisp-file url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs icons password-cache json subr-x map byte-opt gv
bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads
xwidget-internal dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
multi-tty move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 1092583 211653) (symbols 48 57721 53) (strings 32 278315 13612)
(string-bytes 1 8739130) (vectors 16 111852) (vector-slots 8 2563160 82266)
(floats 8 1134 533) (intervals 56 27324 2396) (buffers 992 52))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74739; Package emacs. (Sun, 08 Dec 2024 20:32:01 GMT) Full text and rfc822 format available.

Message #8 received at 74739 <at> debbugs.gnu.org (full text, mbox):

From: Ship Mints <shipmints <at> gmail.com>
To: the_wurfkreuz <the_wurfkreuz <at> proton.me>
Cc: 74739 <at> debbugs.gnu.org
Subject: Re: bug#74739: 31.0.50; eshell/which doesn't return a non-zero exit
 code on not finding a file
Date: Sun, 8 Dec 2024 15:30:09 -0500
[Message part 1 (text/plain, inline)]
I don't know why I'm choosing to answer eshell questions today...

which is an eshell built-in command. You can see this by running

  $ which which
  eshell/which is a native-compiled Lisp function in 'esh-cmd.el'.

Try running /usr/bin/false and then echo $? and you'll see the correct unix
command exit value.

I do not think eshell builtins are intended to behave the same way.

On Sun, Dec 8, 2024 at 11:31 AM the_wurfkreuz via Bug reports for GNU
Emacs, the Swiss army knife of text editors <bug-gnu-emacs <at> gnu.org> wrote:

> eshell/which doesn't return a non-zero exit code on not finding a file.
> Yet it sends the output to stderr. It looks like there is an
> inconsistency.
>
> Steps to reproduce:
>
> ~ $ which test-file
> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
> ~ $ which test-file | grep theoretical
> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
> ~ $ echo $?
> 0
> ~ $ which test-file 2>&1 | grep theoretical
> ~ [1] $
>
>
>
> In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>  3.24.41, cairo version 1.18.0) of 2024-12-06 built on
>  wurfkreuz-B650M-PG-Riptide
> Repository revision: 9ddec89e422d0dd6e9069731b8f2dd2c90aa5607
> Repository branch: master
> Windowing system distributor 'The X.Org Foundation', version 11.0.12302006
> System Description: Ubuntu 24.04.1 LTS
>
> Configured using:
>  'configure --with-native-compilation=aot --with-tree-sitter --with-gif
>  --with-png --with-jpeg --with-tiff --with-imagemagick
>  --with-x-toolkit=gtk3 --with-xwidgets --without-rsvg
>  'WEBKIT_CFLAGS=-I/usr/include/webkitgtk-4.1 -I/usr/include/glib-2.0
>  -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gtk-3.0
>  -I/usr/include/pango-1.0 -I/usr/include/harfbuzz
>  -I/usr/include/freetype2 -I/usr/include/libpng16
>  -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi
>  -I/usr/include/cairo -I/usr/include/pixman-1
>  -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu
>  -I/usr/include/webp -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0
>  -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0
>  -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include
>  -I/usr/include/libsoup-3.0 -I/usr/include/sysprof-6 -pthread '
>  'WEBKIT_LIBS=-lwebkit2gtk-4.1 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0
>  -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo
>  -lgdk_pixbuf-2.0 -lsoup-3.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread
>  -lglib-2.0 -lgio-2.0 -ljavascriptcoregtk-4.1 -lgobject-2.0 -lglib-2.0 '
>  CPPFLAGS=-I/usr/lib/gcc/x86_64-linux-gnu/14/include --with-mailutils'
>
> Configured features:
> CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK
> JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
> PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
> WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB
>
> Important settings:
>   value of $LC_MONETARY: be_BY.UTF-8
>   value of $LC_NUMERIC: be_BY.UTF-8
>   value of $LC_TIME: be_BY.UTF-8
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
>
> Major mode: ELisp/l
>
> Minor modes in effect:
>   windmove-mode: t
>   savehist-mode: t
>   eshell-syntax-highlighting-global-mode: t
>   global-evil-collection-unimpaired-mode: t
>   evil-collection-unimpaired-mode: t
>   global-evil-surround-mode: t
>   evil-surround-mode: t
>   evil-mode: t
>   evil-local-mode: t
>   global-org-modern-mode: t
>   envrc-global-mode: t
>   envrc-mode: t
>   eat-eshell-visual-command-mode: t
>   eat-eshell-mode: t
>   shackle-mode: t
>   popper-echo-mode: t
>   popper-mode: t
>   global-git-commit-mode: t
>   magit-auto-revert-mode: t
>   all-the-icons-completion-mode: t
>   marginalia-mode: t
>   vertico-mode: t
>   global-fish-completion-mode: t
>   fish-completion-mode: t
>   corfu-popupinfo-mode: t
>   corfu-history-mode: t
>   corfu-echo-mode: t
>   global-corfu-mode: t
>   corfu-mode: t
>   yas-global-mode: t
>   yas-minor-mode: t
>   which-key-mode: t
>   global-treesit-auto-mode: t
>   global-undo-tree-mode: t
>   undo-tree-mode: t
>   delete-selection-mode: t
>   global-auto-revert-mode: t
>   save-place-mode: t
>   electric-pair-mode: t
>   recentf-mode: t
>   global-display-line-numbers-mode: t
>   display-line-numbers-mode: t
>   override-global-mode: t
>   tooltip-mode: t
>   show-paren-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   tab-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   minibuffer-regexp-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>
> Load-path shadows:
> /home/wurfkreuz/.emacs.d/elpa/eat/eat hides
> /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat
> /home/wurfkreuz/.emacs.d/elpa/eat/eat-tests hides
> /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat-tests
> /home/wurfkreuz/.emacs.d/elpa/transient-20241201.1616/transient hides
> /home/wurfkreuz/.source/emacs/lisp/transient
> ~/.source/org-mode/lisp/org-element-ast hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
> ~/.source/org-mode/lisp/org-list hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-list
> ~/.source/org-mode/lisp/org-clock hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-clock
> ~/.source/org-mode/lisp/ob-eval hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
> ~/.source/org-mode/lisp/ob-lisp hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
> ~/.source/org-mode/lisp/ob-table hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-table
> ~/.source/org-mode/lisp/ol-rmail hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
> ~/.source/org-mode/lisp/ol-gnus hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
> ~/.source/org-mode/lisp/ob-shell hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
> ~/.source/org-mode/lisp/ol-irc hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
> ~/.source/org-mode/lisp/ob-exp hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
> ~/.source/org-mode/lisp/ob-tangle hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
> ~/.source/org-mode/lisp/ob-julia hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
> ~/.source/org-mode/lisp/ob-fortran hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
> ~/.source/org-mode/lisp/ob-haskell hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
> ~/.source/org-mode/lisp/org-refile hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-refile
> ~/.source/org-mode/lisp/org-timer hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-timer
> ~/.source/org-mode/lisp/org-version hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-version
> ~/.source/org-mode/lisp/org-attach-git hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
> ~/.source/org-mode/lisp/ob-awk hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
> ~/.source/org-mode/lisp/ob-C hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-C
> ~/.source/org-mode/lisp/ol-bibtex hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
> ~/.source/org-mode/lisp/oc-basic hides
> /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
> ~/.source/org-mode/lisp/org-inlinetask hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
> ~/.source/org-mode/lisp/ob-ref hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
> ~/.source/org-mode/lisp/ob-emacs-lisp hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
> ~/.source/org-mode/lisp/ob-sed hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
> ~/.source/org-mode/lisp/org-archive hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-archive
> ~/.source/org-mode/lisp/ob-lua hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
> ~/.source/org-mode/lisp/org-goto hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-goto
> ~/.source/org-mode/lisp/org-fold-core hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core
> ~/.source/org-mode/lisp/oc-csl hides
> /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
> ~/.source/org-mode/lisp/org hides
> /home/wurfkreuz/.source/emacs/lisp/org/org
> ~/.source/org-mode/lisp/ob-forth hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
> ~/.source/org-mode/lisp/ox-koma-letter hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
> ~/.source/org-mode/lisp/ob-eshell hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
> ~/.source/org-mode/lisp/ol-info hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-info
> ~/.source/org-mode/lisp/ol-docview hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
> ~/.source/org-mode/lisp/ox-latex hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
> ~/.source/org-mode/lisp/org-crypt hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
> ~/.source/org-mode/lisp/ob-makefile hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
> ~/.source/org-mode/lisp/org-plot hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-plot
> ~/.source/org-mode/lisp/ob-ocaml hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
> ~/.source/org-mode/lisp/org-faces hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-faces
> ~/.source/org-mode/lisp/org-datetree hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
> ~/.source/org-mode/lisp/ob-lilypond hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
> ~/.source/org-mode/lisp/ob-octave hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
> ~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
> ~/.source/org-mode/lisp/ob-sass hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
> ~/.source/org-mode/lisp/ob-maxima hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
> ~/.source/org-mode/lisp/ob-latex hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
> ~/.source/org-mode/lisp/ob-python hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-python
> ~/.source/org-mode/lisp/org-keys hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-keys
> ~/.source/org-mode/lisp/org-pcomplete hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
> ~/.source/org-mode/lisp/ob-sqlite hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
> ~/.source/org-mode/lisp/org-duration hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-duration
> ~/.source/org-mode/lisp/org-id hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-id
> ~/.source/org-mode/lisp/ob-plantuml hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
> ~/.source/org-mode/lisp/org-macro hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-macro
> ~/.source/org-mode/lisp/ob-ruby hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
> ~/.source/org-mode/lisp/ob-groovy hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
> ~/.source/org-mode/lisp/ox-beamer hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
> ~/.source/org-mode/lisp/ob-comint hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
> ~/.source/org-mode/lisp/ox-odt hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
> ~/.source/org-mode/lisp/ob-calc hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
> ~/.source/org-mode/lisp/ob-R hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-R
> ~/.source/org-mode/lisp/org-loaddefs hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
> ~/.source/org-mode/lisp/ol-man hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-man
> ~/.source/org-mode/lisp/org-capture hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-capture
> ~/.source/org-mode/lisp/ol-eshell hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
> ~/.source/org-mode/lisp/ox-texinfo hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
> ~/.source/org-mode/lisp/ox-ascii hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
> ~/.source/org-mode/lisp/org-element hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-element
> ~/.source/org-mode/lisp/org-macs hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-macs
> ~/.source/org-mode/lisp/org-compat hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-compat
> ~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
> ~/.source/org-mode/lisp/ob-js hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-js
> ~/.source/org-mode/lisp/ol-bbdb hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
> ~/.source/org-mode/lisp/org-fold hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-fold
> ~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
> ~/.source/org-mode/lisp/oc-biblatex hides
> /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
> ~/.source/org-mode/lisp/ob-perl hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
> ~/.source/org-mode/lisp/ob-screen hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
> ~/.source/org-mode/lisp/org-ctags hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
> ~/.source/org-mode/lisp/org-table hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-table
> ~/.source/org-mode/lisp/org-persist hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-persist
> ~/.source/org-mode/lisp/ob-scheme hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
> ~/.source/org-mode/lisp/org-agenda hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
> ~/.source/org-mode/lisp/oc-natbib hides
> /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
> ~/.source/org-mode/lisp/ob-processing hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
> ~/.source/org-mode/lisp/org-habit hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-habit
> ~/.source/org-mode/lisp/org-entities hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-entities
> ~/.source/org-mode/lisp/ob-java hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-java
> ~/.source/org-mode/lisp/ob-gnuplot hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
> ~/.source/org-mode/lisp/ol-w3m hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
> ~/.source/org-mode/lisp/ox-org hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-org
> ~/.source/org-mode/lisp/ox-man hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-man
> ~/.source/org-mode/lisp/org-lint hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-lint
> ~/.source/org-mode/lisp/org-protocol hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
> ~/.source/org-mode/lisp/ob-core hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-core
> ~/.source/org-mode/lisp/ol-eww hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
> ~/.source/org-mode/lisp/ox-publish hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
> ~/.source/org-mode/lisp/org-footnote hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
> ~/.source/org-mode/lisp/ox-md hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-md
> ~/.source/org-mode/lisp/org-feed hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-feed
> ~/.source/org-mode/lisp/ol-doi hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
> ~/.source/org-mode/lisp/ox-html hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-html
> ~/.source/org-mode/lisp/org-src hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-src
> ~/.source/org-mode/lisp/ob-org hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-org
> ~/.source/org-mode/lisp/oc-bibtex hides
> /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
> ~/.source/org-mode/lisp/org-mouse hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
> ~/.source/org-mode/lisp/org-colview hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-colview
> ~/.source/org-mode/lisp/ol-mhe hides
> /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
> ~/.source/org-mode/lisp/ob-lob hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
> ~/.source/org-mode/lisp/ox-icalendar hides
> /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
> ~/.source/org-mode/lisp/org-tempo hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
> ~/.source/org-mode/lisp/ob-matlab hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
> ~/.source/org-mode/lisp/ob-sql hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
> ~/.source/org-mode/lisp/ob-dot hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
> ~/.source/org-mode/lisp/ob-ditaa hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
> ~/.source/org-mode/lisp/ob-clojure hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
> ~/.source/org-mode/lisp/org-indent hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-indent
> ~/.source/org-mode/lisp/org-cycle hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
> ~/.source/org-mode/lisp/org-mobile hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
> ~/.source/org-mode/lisp/org-num hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-num
> ~/.source/org-mode/lisp/ob-css hides
> /home/wurfkreuz/.source/emacs/lisp/org/ob-css
> ~/.source/org-mode/lisp/org-attach hides
> /home/wurfkreuz/.source/emacs/lisp/org/org-attach
> ~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox
>
> Features:
> (shadow sort mail-extr emacsbug tramp-cmds pulse color help-fns
> radix-tree pcmpl-unix windmove flymake-shellcheck python bug-reference
> org-bullets org-indent dired-aux toc-org image-file image-converter
> oc-basic ol-eww eww vtable mule-util url-queue mm-url ol-rmail ol-mhe
> ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
> smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom
> gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap
> nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus
> nnheader range ol-docview doc-view jka-compr image-mode exif ol-bibtex
> bibtex ol-bbdb ol-w3m ol-doi org-link-doi vc-git vc-dispatcher em-unix
> em-term evil-collection-term term disp-table ehelp em-script em-pred
> em-ls em-hist em-glob em-extpipe em-basic em-banner em-elecslash eshell
> savehist em-tramp eshell-syntax-highlighting em-prompt em-alias
> evil-collection-unimpaired evil-collection-debug evil-collection-magit
> evil-collection-docker evil-collection-minibuffer evil-collection-org
> evil-collection-dired evil-collection annalist evil-org evil-surround
> evil evil-integration evil-maps evil-commands reveal evil-jumps
> evil-command-window evil-types evil-search evil-ex evil-macros
> evil-repeat evil-states evil-core evil-common rect evil-vars org-modern
> org-tempo tempo org-drill persist org-agenda org-download org-attach
> url-http url-auth url-gw nsm async embark-org org-element org-persist
> org-id org-refile org-element-ast inline avl-tree org ob ob-tangle
> ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
> org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core
> ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc
> org-loaddefs cal-menu calendar cal-loaddefs org-version org-compat
> org-macs eglot external-completion jsonrpc ert ewoc debug backtrace
> systemd conf-mode nix-mode nix-repl nix-shell nix-store nix-log
> nix-instantiate nix-shebang nix-format nix yaml-mode haskell-mode
> haskell-cabal haskell-utils haskell-font-lock haskell-indentation
> haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports
> haskell-complete-module haskell-ghc-support flymake-proc dabbrev
> haskell-customize dockerfile-mode sh-script executable terraform-mode
> noutline outline hcl-mode lua-mode go-mode find-file etags fileloop xref
> raku-mode raku-repl raku-imenu raku-indent smie raku-font-lock
> raku-detect flymake-hadolint flymake envrc inheritenv eat shackle trace
> cl-print popper-echo popper transpose-frame magit-bookmark
> magit-submodule magit-blame magit-stash magit-reflog magit-bisect
> magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
> magit-sequence magit-notes magit-worktree magit-tag magit-merge
> magit-branch magit-reset magit-files magit-refs magit-status magit
> magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
> smerge-mode diff-mode track-changes git-commit log-edit message sendmail
> yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config
> gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
> rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
> mailheader pcvs-util add-log magit-core magit-autorevert magit-margin
> magit-transient magit-process magit-mode benchmark magit-git magit-base
> magit-section cursor-sensor crm hydra lv with-editor server
> all-the-icons-completion all-the-icons-dired all-the-icons
> all-the-icons-faces data-material data-weathericons data-octicons
> data-fileicons data-faicons data-alltheicons embark-consult embark ffap
> thingatpt consult bookmark marginalia vertico project zoxide sudo-edit
> exec-path-from-shell fish-completion em-cmpl em-dirs esh-mode esh-var
> esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
> esh-module-loaddefs esh-util cape corfu-popupinfo corfu-history
> corfu-echo corfu orderless yasnippet commander f wgrep grep compile
> text-property-search which-key docker docker-context docker-volume
> docker-network docker-image docker-container docker-faces docker-core
> docker-compose docker-process docker-utils tablist advice tablist-filter
> semantic/wisent/comp semantic/wisent semantic/wisent/wisent
> semantic/util-modes semantic/util semantic pp semantic/tag semantic/lex
> semantic/fw mode-local find-func cedet dired dired-loaddefs docker-group
> transient edmacro kmacro compat dash aio generator s avy clojure-ts-mode
> treesit-auto treesit rose-pine-theme undo-tree diff queue delsel
> midnight autorevert filenotify saveplace tramp-cache time-stamp tramp-sh
> tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
> shell pcomplete comint ansi-osc ring parse-time iso8601 time-date
> format-spec ansi-color tramp-loaddefs desktop frameset comp comp-cstr
> cl-extra help-mode warnings comp-run comp-common elec-pair recentf
> tree-widget wid-edit display-line-numbers use-package use-package-ensure
> use-package-delight use-package-diminish use-package-bind-key bind-key
> easy-mmode use-package-core all-the-icons-completion-autoloads
> all-the-icons-dired-autoloads all-the-icons-autoloads avy-autoloads
> cape-autoloads clojure-ts-mode-autoloads commander-autoloads
> corfu-autoloads docker-autoloads aio-autoloads dockerfile-mode-autoloads
> eat-autoloads emacs-eat-autoloads finder-inf embark-consult-autoloads
> consult-autoloads embark-autoloads envrc-autoloads
> eshell-syntax-highlighting-autoloads evil-collection-autoloads
> annalist-autoloads evil-org-autoloads evil-surround-autoloads
> evil-autoloads exec-path-from-shell-autoloads f-autoloads
> fish-completion-autoloads flymake-ansible-lint-autoloads
> flymake-hadolint-autoloads flymake-shellcheck-autoloads
> go-mode-autoloads goto-chg-autoloads haskell-mode-autoloads
> hydra-autoloads inheritenv-autoloads lua-mode-autoloads lv-autoloads
> magit-autoloads pcase marginalia-autoloads meow-autoloads
> nix-mode-autoloads magit-section-autoloads orderless-autoloads
> org-bullets-autoloads org-download-autoloads async-autoloads
> org-drill-autoloads org-modern-autoloads persist-autoloads
> popper-autoloads pyvenv-autoloads raku-mode-autoloads s-autoloads
> shackle-autoloads sudo-edit-autoloads swiper-autoloads ivy-autoloads
> systemd-autoloads rx tablist-autoloads terraform-mode-autoloads
> dash-autoloads hcl-mode-autoloads toc-org-autoloads transient-autoloads
> transpose-frame-autoloads treesit-auto-autoloads undo-tree-autoloads
> queue-autoloads vertico-autoloads wgrep-autoloads info
> with-editor-autoloads yaml-mode-autoloads yasnippet-autoloads
> zoxide-autoloads package browse-url url url-proxy url-privacy url-expand
> url-methods url-history url-cookie generate-lisp-file url-domsuf
> url-util mailcap url-handlers url-parse auth-source cl-seq eieio
> eieio-core cl-macs icons password-cache json subr-x map byte-opt gv
> bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
> cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
> elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
> tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
> newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
> rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
> font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
> simple cl-generic indonesian philippine cham georgian utf-8-lang
> misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
> cp51932 hebrew greek romanian slovak czech european ethiopic indian
> cyrillic chinese composite emoji-zwj charscript charprop case-table
> epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
> loaddefs theme-loaddefs faces cus-face macroexp files window
> text-properties overlay sha1 md5 base64 format env code-pages mule
> custom widget keymap hashtable-print-readable backquote threads
> xwidget-internal dbusbind inotify lcms2 dynamic-setting
> system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
> multi-tty move-toolbar make-network-process native-compile emacs)
>
> Memory information:
> ((conses 16 1092583 211653) (symbols 48 57721 53) (strings 32 278315 13612)
>  (string-bytes 1 8739130) (vectors 16 111852) (vector-slots 8 2563160
> 82266)
>  (floats 8 1134 533) (intervals 56 27324 2396) (buffers 992 52))
>
>
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74739; Package emacs. (Sun, 08 Dec 2024 20:47:02 GMT) Full text and rfc822 format available.

Message #11 received at 74739 <at> debbugs.gnu.org (full text, mbox):

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: Ship Mints <shipmints <at> gmail.com>
Cc: 74739 <at> debbugs.gnu.org
Subject: Re: bug#74739: 31.0.50;
 eshell/which doesn't return a non-zero exit code on not finding a file
Date: Sun, 08 Dec 2024 20:46:04 +0000
[Message part 1 (text/plain, inline)]
I understand that eshell built-ins might behave differently from Unix commands, but isn't it still inconsistent for eshell/which to use stderr (indicating an error) while returning exit code 0 (indicating success)? If this isn't an accidental oversight, i'd be interested to know why it was designed this way.

On Sunday, December 8th, 2024 at 23:30, Ship Mints <shipmints <at> gmail.com> wrote:

> I don't know why I'm choosing to answer eshell questions today...
>
> which is an eshell built-in command. You can see this by running
>
> $ which which
> eshell/which is a native-compiled Lisp function in 'esh-cmd.el'.
>
> Try running /usr/bin/false and then echo $? and you'll see the correct unix command exit value.
>
> I do not think eshell builtins are intended to behave the same way.
>
> On Sun, Dec 8, 2024 at 11:31 AM the_wurfkreuz via Bug reports for GNU Emacs, the Swiss army knife of text editors <bug-gnu-emacs <at> gnu.org> wrote:
>
>> eshell/which doesn't return a non-zero exit code on not finding a file. Yet it sends the output to stderr. It looks like there is an inconsistency.
>>
>> Steps to reproduce:
>>
>> ~ $ which test-file
>> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
>> ~ $ which test-file | grep theoretical
>> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
>> ~ $ echo $?
>> 0
>> ~ $ which test-file 2>&1 | grep theoretical
>> ~ [1] $
>>
>> In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>> 3.24.41, cairo version 1.18.0) of 2024-12-06 built on
>> wurfkreuz-B650M-PG-Riptide
>> Repository revision: 9ddec89e422d0dd6e9069731b8f2dd2c90aa5607
>> Repository branch: master
>> Windowing system distributor 'The X.Org Foundation', version 11.0.12302006
>> System Description: Ubuntu 24.04.1 LTS
>>
>> Configured using:
>> 'configure --with-native-compilation=aot --with-tree-sitter --with-gif
>> --with-png --with-jpeg --with-tiff --with-imagemagick
>> --with-x-toolkit=gtk3 --with-xwidgets --without-rsvg
>> 'WEBKIT_CFLAGS=-I/usr/include/webkitgtk-4.1 -I/usr/include/glib-2.0
>> -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gtk-3.0
>> -I/usr/include/pango-1.0 -I/usr/include/harfbuzz
>> -I/usr/include/freetype2 -I/usr/include/libpng16
>> -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi
>> -I/usr/include/cairo -I/usr/include/pixman-1
>> -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu
>> -I/usr/include/webp -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0
>> -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0
>> -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include
>> -I/usr/include/libsoup-3.0 -I/usr/include/sysprof-6 -pthread '
>> 'WEBKIT_LIBS=-lwebkit2gtk-4.1 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0
>> -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo
>> -lgdk_pixbuf-2.0 -lsoup-3.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread
>> -lglib-2.0 -lgio-2.0 -ljavascriptcoregtk-4.1 -lgobject-2.0 -lglib-2.0 '
>> CPPFLAGS=-I/usr/lib/gcc/x86_64-linux-gnu/14/include --with-mailutils'
>>
>> Configured features:
>> CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK
>> JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
>> PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
>> WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB
>>
>> Important settings:
>> value of $LC_MONETARY: be_BY.UTF-8
>> value of $LC_NUMERIC: be_BY.UTF-8
>> value of $LC_TIME: be_BY.UTF-8
>> value of $LANG: en_US.UTF-8
>> locale-coding-system: utf-8-unix
>>
>> Major mode: ELisp/l
>>
>> Minor modes in effect:
>> windmove-mode: t
>> savehist-mode: t
>> eshell-syntax-highlighting-global-mode: t
>> global-evil-collection-unimpaired-mode: t
>> evil-collection-unimpaired-mode: t
>> global-evil-surround-mode: t
>> evil-surround-mode: t
>> evil-mode: t
>> evil-local-mode: t
>> global-org-modern-mode: t
>> envrc-global-mode: t
>> envrc-mode: t
>> eat-eshell-visual-command-mode: t
>> eat-eshell-mode: t
>> shackle-mode: t
>> popper-echo-mode: t
>> popper-mode: t
>> global-git-commit-mode: t
>> magit-auto-revert-mode: t
>> all-the-icons-completion-mode: t
>> marginalia-mode: t
>> vertico-mode: t
>> global-fish-completion-mode: t
>> fish-completion-mode: t
>> corfu-popupinfo-mode: t
>> corfu-history-mode: t
>> corfu-echo-mode: t
>> global-corfu-mode: t
>> corfu-mode: t
>> yas-global-mode: t
>> yas-minor-mode: t
>> which-key-mode: t
>> global-treesit-auto-mode: t
>> global-undo-tree-mode: t
>> undo-tree-mode: t
>> delete-selection-mode: t
>> global-auto-revert-mode: t
>> save-place-mode: t
>> electric-pair-mode: t
>> recentf-mode: t
>> global-display-line-numbers-mode: t
>> display-line-numbers-mode: t
>> override-global-mode: t
>> tooltip-mode: t
>> show-paren-mode: t
>> electric-indent-mode: t
>> mouse-wheel-mode: t
>> tab-bar-mode: t
>> file-name-shadow-mode: t
>> global-font-lock-mode: t
>> font-lock-mode: t
>> minibuffer-regexp-mode: t
>> line-number-mode: t
>> transient-mark-mode: t
>> auto-composition-mode: t
>> auto-encryption-mode: t
>> auto-compression-mode: t
>>
>> Load-path shadows:
>> /home/wurfkreuz/.emacs.d/elpa/eat/eat hides /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat
>> /home/wurfkreuz/.emacs.d/elpa/eat/eat-tests hides /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat-tests
>> /home/wurfkreuz/.emacs.d/elpa/transient-20241201.1616/transient hides /home/wurfkreuz/.source/emacs/lisp/transient
>> ~/.source/org-mode/lisp/org-element-ast hides /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
>> ~/.source/org-mode/lisp/org-list hides /home/wurfkreuz/.source/emacs/lisp/org/org-list
>> ~/.source/org-mode/lisp/org-clock hides /home/wurfkreuz/.source/emacs/lisp/org/org-clock
>> ~/.source/org-mode/lisp/ob-eval hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
>> ~/.source/org-mode/lisp/ob-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
>> ~/.source/org-mode/lisp/ob-table hides /home/wurfkreuz/.source/emacs/lisp/org/ob-table
>> ~/.source/org-mode/lisp/ol-rmail hides /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
>> ~/.source/org-mode/lisp/ol-gnus hides /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
>> ~/.source/org-mode/lisp/ob-shell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
>> ~/.source/org-mode/lisp/ol-irc hides /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
>> ~/.source/org-mode/lisp/ob-exp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
>> ~/.source/org-mode/lisp/ob-tangle hides /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
>> ~/.source/org-mode/lisp/ob-julia hides /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
>> ~/.source/org-mode/lisp/ob-fortran hides /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
>> ~/.source/org-mode/lisp/ob-haskell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
>> ~/.source/org-mode/lisp/org-refile hides /home/wurfkreuz/.source/emacs/lisp/org/org-refile
>> ~/.source/org-mode/lisp/org-timer hides /home/wurfkreuz/.source/emacs/lisp/org/org-timer
>> ~/.source/org-mode/lisp/org-version hides /home/wurfkreuz/.source/emacs/lisp/org/org-version
>> ~/.source/org-mode/lisp/org-attach-git hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
>> ~/.source/org-mode/lisp/ob-awk hides /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
>> ~/.source/org-mode/lisp/ob-C hides /home/wurfkreuz/.source/emacs/lisp/org/ob-C
>> ~/.source/org-mode/lisp/ol-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
>> ~/.source/org-mode/lisp/oc-basic hides /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
>> ~/.source/org-mode/lisp/org-inlinetask hides /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
>> ~/.source/org-mode/lisp/ob-ref hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
>> ~/.source/org-mode/lisp/ob-emacs-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
>> ~/.source/org-mode/lisp/ob-sed hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
>> ~/.source/org-mode/lisp/org-archive hides /home/wurfkreuz/.source/emacs/lisp/org/org-archive
>> ~/.source/org-mode/lisp/ob-lua hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
>> ~/.source/org-mode/lisp/org-goto hides /home/wurfkreuz/.source/emacs/lisp/org/org-goto
>> ~/.source/org-mode/lisp/org-fold-core hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core
>> ~/.source/org-mode/lisp/oc-csl hides /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
>> ~/.source/org-mode/lisp/org hides /home/wurfkreuz/.source/emacs/lisp/org/org
>> ~/.source/org-mode/lisp/ob-forth hides /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
>> ~/.source/org-mode/lisp/ox-koma-letter hides /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
>> ~/.source/org-mode/lisp/ob-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
>> ~/.source/org-mode/lisp/ol-info hides /home/wurfkreuz/.source/emacs/lisp/org/ol-info
>> ~/.source/org-mode/lisp/ol-docview hides /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
>> ~/.source/org-mode/lisp/ox-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
>> ~/.source/org-mode/lisp/org-crypt hides /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
>> ~/.source/org-mode/lisp/ob-makefile hides /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
>> ~/.source/org-mode/lisp/org-plot hides /home/wurfkreuz/.source/emacs/lisp/org/org-plot
>> ~/.source/org-mode/lisp/ob-ocaml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
>> ~/.source/org-mode/lisp/org-faces hides /home/wurfkreuz/.source/emacs/lisp/org/org-faces
>> ~/.source/org-mode/lisp/org-datetree hides /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
>> ~/.source/org-mode/lisp/ob-lilypond hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
>> ~/.source/org-mode/lisp/ob-octave hides /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
>> ~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
>> ~/.source/org-mode/lisp/ob-sass hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
>> ~/.source/org-mode/lisp/ob-maxima hides /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
>> ~/.source/org-mode/lisp/ob-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
>> ~/.source/org-mode/lisp/ob-python hides /home/wurfkreuz/.source/emacs/lisp/org/ob-python
>> ~/.source/org-mode/lisp/org-keys hides /home/wurfkreuz/.source/emacs/lisp/org/org-keys
>> ~/.source/org-mode/lisp/org-pcomplete hides /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
>> ~/.source/org-mode/lisp/ob-sqlite hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
>> ~/.source/org-mode/lisp/org-duration hides /home/wurfkreuz/.source/emacs/lisp/org/org-duration
>> ~/.source/org-mode/lisp/org-id hides /home/wurfkreuz/.source/emacs/lisp/org/org-id
>> ~/.source/org-mode/lisp/ob-plantuml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
>> ~/.source/org-mode/lisp/org-macro hides /home/wurfkreuz/.source/emacs/lisp/org/org-macro
>> ~/.source/org-mode/lisp/ob-ruby hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
>> ~/.source/org-mode/lisp/ob-groovy hides /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
>> ~/.source/org-mode/lisp/ox-beamer hides /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
>> ~/.source/org-mode/lisp/ob-comint hides /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
>> ~/.source/org-mode/lisp/ox-odt hides /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
>> ~/.source/org-mode/lisp/ob-calc hides /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
>> ~/.source/org-mode/lisp/ob-R hides /home/wurfkreuz/.source/emacs/lisp/org/ob-R
>> ~/.source/org-mode/lisp/org-loaddefs hides /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
>> ~/.source/org-mode/lisp/ol-man hides /home/wurfkreuz/.source/emacs/lisp/org/ol-man
>> ~/.source/org-mode/lisp/org-capture hides /home/wurfkreuz/.source/emacs/lisp/org/org-capture
>> ~/.source/org-mode/lisp/ol-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
>> ~/.source/org-mode/lisp/ox-texinfo hides /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
>> ~/.source/org-mode/lisp/ox-ascii hides /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
>> ~/.source/org-mode/lisp/org-element hides /home/wurfkreuz/.source/emacs/lisp/org/org-element
>> ~/.source/org-mode/lisp/org-macs hides /home/wurfkreuz/.source/emacs/lisp/org/org-macs
>> ~/.source/org-mode/lisp/org-compat hides /home/wurfkreuz/.source/emacs/lisp/org/org-compat
>> ~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
>> ~/.source/org-mode/lisp/ob-js hides /home/wurfkreuz/.source/emacs/lisp/org/ob-js
>> ~/.source/org-mode/lisp/ol-bbdb hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
>> ~/.source/org-mode/lisp/org-fold hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold
>> ~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
>> ~/.source/org-mode/lisp/oc-biblatex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
>> ~/.source/org-mode/lisp/ob-perl hides /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
>> ~/.source/org-mode/lisp/ob-screen hides /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
>> ~/.source/org-mode/lisp/org-ctags hides /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
>> ~/.source/org-mode/lisp/org-table hides /home/wurfkreuz/.source/emacs/lisp/org/org-table
>> ~/.source/org-mode/lisp/org-persist hides /home/wurfkreuz/.source/emacs/lisp/org/org-persist
>> ~/.source/org-mode/lisp/ob-scheme hides /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
>> ~/.source/org-mode/lisp/org-agenda hides /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
>> ~/.source/org-mode/lisp/oc-natbib hides /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
>> ~/.source/org-mode/lisp/ob-processing hides /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
>> ~/.source/org-mode/lisp/org-habit hides /home/wurfkreuz/.source/emacs/lisp/org/org-habit
>> ~/.source/org-mode/lisp/org-entities hides /home/wurfkreuz/.source/emacs/lisp/org/org-entities
>> ~/.source/org-mode/lisp/ob-java hides /home/wurfkreuz/.source/emacs/lisp/org/ob-java
>> ~/.source/org-mode/lisp/ob-gnuplot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
>> ~/.source/org-mode/lisp/ol-w3m hides /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
>> ~/.source/org-mode/lisp/ox-org hides /home/wurfkreuz/.source/emacs/lisp/org/ox-org
>> ~/.source/org-mode/lisp/ox-man hides /home/wurfkreuz/.source/emacs/lisp/org/ox-man
>> ~/.source/org-mode/lisp/org-lint hides /home/wurfkreuz/.source/emacs/lisp/org/org-lint
>> ~/.source/org-mode/lisp/org-protocol hides /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
>> ~/.source/org-mode/lisp/ob-core hides /home/wurfkreuz/.source/emacs/lisp/org/ob-core
>> ~/.source/org-mode/lisp/ol-eww hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
>> ~/.source/org-mode/lisp/ox-publish hides /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
>> ~/.source/org-mode/lisp/org-footnote hides /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
>> ~/.source/org-mode/lisp/ox-md hides /home/wurfkreuz/.source/emacs/lisp/org/ox-md
>> ~/.source/org-mode/lisp/org-feed hides /home/wurfkreuz/.source/emacs/lisp/org/org-feed
>> ~/.source/org-mode/lisp/ol-doi hides /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
>> ~/.source/org-mode/lisp/ox-html hides /home/wurfkreuz/.source/emacs/lisp/org/ox-html
>> ~/.source/org-mode/lisp/org-src hides /home/wurfkreuz/.source/emacs/lisp/org/org-src
>> ~/.source/org-mode/lisp/ob-org hides /home/wurfkreuz/.source/emacs/lisp/org/ob-org
>> ~/.source/org-mode/lisp/oc-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
>> ~/.source/org-mode/lisp/org-mouse hides /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
>> ~/.source/org-mode/lisp/org-colview hides /home/wurfkreuz/.source/emacs/lisp/org/org-colview
>> ~/.source/org-mode/lisp/ol-mhe hides /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
>> ~/.source/org-mode/lisp/ob-lob hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
>> ~/.source/org-mode/lisp/ox-icalendar hides /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
>> ~/.source/org-mode/lisp/org-tempo hides /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
>> ~/.source/org-mode/lisp/ob-matlab hides /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
>> ~/.source/org-mode/lisp/ob-sql hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
>> ~/.source/org-mode/lisp/ob-dot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
>> ~/.source/org-mode/lisp/ob-ditaa hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
>> ~/.source/org-mode/lisp/ob-clojure hides /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
>> ~/.source/org-mode/lisp/org-indent hides /home/wurfkreuz/.source/emacs/lisp/org/org-indent
>> ~/.source/org-mode/lisp/org-cycle hides /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
>> ~/.source/org-mode/lisp/org-mobile hides /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
>> ~/.source/org-mode/lisp/org-num hides /home/wurfkreuz/.source/emacs/lisp/org/org-num
>> ~/.source/org-mode/lisp/ob-css hides /home/wurfkreuz/.source/emacs/lisp/org/ob-css
>> ~/.source/org-mode/lisp/org-attach hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach
>> ~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox
>>
>> Features:
>> (shadow sort mail-extr emacsbug tramp-cmds pulse color help-fns
>> radix-tree pcmpl-unix windmove flymake-shellcheck python bug-reference
>> org-bullets org-indent dired-aux toc-org image-file image-converter
>> oc-basic ol-eww eww vtable mule-util url-queue mm-url ol-rmail ol-mhe
>> ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
>> smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom
>> gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap
>> nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus
>> nnheader range ol-docview doc-view jka-compr image-mode exif ol-bibtex
>> bibtex ol-bbdb ol-w3m ol-doi org-link-doi vc-git vc-dispatcher em-unix
>> em-term evil-collection-term term disp-table ehelp em-script em-pred
>> em-ls em-hist em-glob em-extpipe em-basic em-banner em-elecslash eshell
>> savehist em-tramp eshell-syntax-highlighting em-prompt em-alias
>> evil-collection-unimpaired evil-collection-debug evil-collection-magit
>> evil-collection-docker evil-collection-minibuffer evil-collection-org
>> evil-collection-dired evil-collection annalist evil-org evil-surround
>> evil evil-integration evil-maps evil-commands reveal evil-jumps
>> evil-command-window evil-types evil-search evil-ex evil-macros
>> evil-repeat evil-states evil-core evil-common rect evil-vars org-modern
>> org-tempo tempo org-drill persist org-agenda org-download org-attach
>> url-http url-auth url-gw nsm async embark-org org-element org-persist
>> org-id org-refile org-element-ast inline avl-tree org ob ob-tangle
>> ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
>> org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core
>> ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc
>> org-loaddefs cal-menu calendar cal-loaddefs org-version org-compat
>> org-macs eglot external-completion jsonrpc ert ewoc debug backtrace
>> systemd conf-mode nix-mode nix-repl nix-shell nix-store nix-log
>> nix-instantiate nix-shebang nix-format nix yaml-mode haskell-mode
>> haskell-cabal haskell-utils haskell-font-lock haskell-indentation
>> haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports
>> haskell-complete-module haskell-ghc-support flymake-proc dabbrev
>> haskell-customize dockerfile-mode sh-script executable terraform-mode
>> noutline outline hcl-mode lua-mode go-mode find-file etags fileloop xref
>> raku-mode raku-repl raku-imenu raku-indent smie raku-font-lock
>> raku-detect flymake-hadolint flymake envrc inheritenv eat shackle trace
>> cl-print popper-echo popper transpose-frame magit-bookmark
>> magit-submodule magit-blame magit-stash magit-reflog magit-bisect
>> magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
>> magit-sequence magit-notes magit-worktree magit-tag magit-merge
>> magit-branch magit-reset magit-files magit-refs magit-status magit
>> magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
>> smerge-mode diff-mode track-changes git-commit log-edit message sendmail
>> yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config
>> gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
>> rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
>> mailheader pcvs-util add-log magit-core magit-autorevert magit-margin
>> magit-transient magit-process magit-mode benchmark magit-git magit-base
>> magit-section cursor-sensor crm hydra lv with-editor server
>> all-the-icons-completion all-the-icons-dired all-the-icons
>> all-the-icons-faces data-material data-weathericons data-octicons
>> data-fileicons data-faicons data-alltheicons embark-consult embark ffap
>> thingatpt consult bookmark marginalia vertico project zoxide sudo-edit
>> exec-path-from-shell fish-completion em-cmpl em-dirs esh-mode esh-var
>> esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
>> esh-module-loaddefs esh-util cape corfu-popupinfo corfu-history
>> corfu-echo corfu orderless yasnippet commander f wgrep grep compile
>> text-property-search which-key docker docker-context docker-volume
>> docker-network docker-image docker-container docker-faces docker-core
>> docker-compose docker-process docker-utils tablist advice tablist-filter
>> semantic/wisent/comp semantic/wisent semantic/wisent/wisent
>> semantic/util-modes semantic/util semantic pp semantic/tag semantic/lex
>> semantic/fw mode-local find-func cedet dired dired-loaddefs docker-group
>> transient edmacro kmacro compat dash aio generator s avy clojure-ts-mode
>> treesit-auto treesit rose-pine-theme undo-tree diff queue delsel
>> midnight autorevert filenotify saveplace tramp-cache time-stamp tramp-sh
>> tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
>> shell pcomplete comint ansi-osc ring parse-time iso8601 time-date
>> format-spec ansi-color tramp-loaddefs desktop frameset comp comp-cstr
>> cl-extra help-mode warnings comp-run comp-common elec-pair recentf
>> tree-widget wid-edit display-line-numbers use-package use-package-ensure
>> use-package-delight use-package-diminish use-package-bind-key bind-key
>> easy-mmode use-package-core all-the-icons-completion-autoloads
>> all-the-icons-dired-autoloads all-the-icons-autoloads avy-autoloads
>> cape-autoloads clojure-ts-mode-autoloads commander-autoloads
>> corfu-autoloads docker-autoloads aio-autoloads dockerfile-mode-autoloads
>> eat-autoloads emacs-eat-autoloads finder-inf embark-consult-autoloads
>> consult-autoloads embark-autoloads envrc-autoloads
>> eshell-syntax-highlighting-autoloads evil-collection-autoloads
>> annalist-autoloads evil-org-autoloads evil-surround-autoloads
>> evil-autoloads exec-path-from-shell-autoloads f-autoloads
>> fish-completion-autoloads flymake-ansible-lint-autoloads
>> flymake-hadolint-autoloads flymake-shellcheck-autoloads
>> go-mode-autoloads goto-chg-autoloads haskell-mode-autoloads
>> hydra-autoloads inheritenv-autoloads lua-mode-autoloads lv-autoloads
>> magit-autoloads pcase marginalia-autoloads meow-autoloads
>> nix-mode-autoloads magit-section-autoloads orderless-autoloads
>> org-bullets-autoloads org-download-autoloads async-autoloads
>> org-drill-autoloads org-modern-autoloads persist-autoloads
>> popper-autoloads pyvenv-autoloads raku-mode-autoloads s-autoloads
>> shackle-autoloads sudo-edit-autoloads swiper-autoloads ivy-autoloads
>> systemd-autoloads rx tablist-autoloads terraform-mode-autoloads
>> dash-autoloads hcl-mode-autoloads toc-org-autoloads transient-autoloads
>> transpose-frame-autoloads treesit-auto-autoloads undo-tree-autoloads
>> queue-autoloads vertico-autoloads wgrep-autoloads info
>> with-editor-autoloads yaml-mode-autoloads yasnippet-autoloads
>> zoxide-autoloads package browse-url url url-proxy url-privacy url-expand
>> url-methods url-history url-cookie generate-lisp-file url-domsuf
>> url-util mailcap url-handlers url-parse auth-source cl-seq eieio
>> eieio-core cl-macs icons password-cache json subr-x map byte-opt gv
>> bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
>> cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
>> elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
>> tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
>> newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
>> rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
>> font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
>> simple cl-generic indonesian philippine cham georgian utf-8-lang
>> misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
>> cp51932 hebrew greek romanian slovak czech european ethiopic indian
>> cyrillic chinese composite emoji-zwj charscript charprop case-table
>> epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
>> loaddefs theme-loaddefs faces cus-face macroexp files window
>> text-properties overlay sha1 md5 base64 format env code-pages mule
>> custom widget keymap hashtable-print-readable backquote threads
>> xwidget-internal dbusbind inotify lcms2 dynamic-setting
>> system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
>> multi-tty move-toolbar make-network-process native-compile emacs)
>>
>> Memory information:
>> ((conses 16 1092583 211653) (symbols 48 57721 53) (strings 32 278315 13612)
>> (string-bytes 1 8739130) (vectors 16 111852) (vector-slots 8 2563160 82266)
>> (floats 8 1134 533) (intervals 56 27324 2396) (buffers 992 52))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74739; Package emacs. (Sun, 08 Dec 2024 20:49:02 GMT) Full text and rfc822 format available.

Message #14 received at 74739 <at> debbugs.gnu.org (full text, mbox):

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: Ship Mints <shipmints <at> gmail.com>
Cc: 74739 <at> debbugs.gnu.org
Subject: Re: bug#74739: 31.0.50;
 eshell/which doesn't return a non-zero exit code on not finding a file
Date: Sun, 08 Dec 2024 20:48:04 +0000
[Message part 1 (text/plain, inline)]
But yeah, i'm not an expert on unix, maybe other standard utilities also behave like this.

On Sunday, December 8th, 2024 at 23:46, the_wurfkreuz <the_wurfkreuz <at> proton.me> wrote:

> I understand that eshell built-ins might behave differently from Unix commands, but isn't it still inconsistent for eshell/which to use stderr (indicating an error) while returning exit code 0 (indicating success)? If this isn't an accidental oversight, i'd be interested to know why it was designed this way.
>
> On Sunday, December 8th, 2024 at 23:30, Ship Mints <shipmints <at> gmail.com> wrote:
>
>> I don't know why I'm choosing to answer eshell questions today...
>>
>> which is an eshell built-in command. You can see this by running
>>
>> $ which which
>> eshell/which is a native-compiled Lisp function in 'esh-cmd.el'.
>>
>> Try running /usr/bin/false and then echo $? and you'll see the correct unix command exit value.
>>
>> I do not think eshell builtins are intended to behave the same way.
>>
>> On Sun, Dec 8, 2024 at 11:31 AM the_wurfkreuz via Bug reports for GNU Emacs, the Swiss army knife of text editors <bug-gnu-emacs <at> gnu.org> wrote:
>>
>>> eshell/which doesn't return a non-zero exit code on not finding a file. Yet it sends the output to stderr. It looks like there is an inconsistency.
>>>
>>> Steps to reproduce:
>>>
>>> ~ $ which test-file
>>> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
>>> ~ $ which test-file | grep theoretical
>>> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
>>> ~ $ echo $?
>>> 0
>>> ~ $ which test-file 2>&1 | grep theoretical
>>> ~ [1] $
>>>
>>> In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>>> 3.24.41, cairo version 1.18.0) of 2024-12-06 built on
>>> wurfkreuz-B650M-PG-Riptide
>>> Repository revision: 9ddec89e422d0dd6e9069731b8f2dd2c90aa5607
>>> Repository branch: master
>>> Windowing system distributor 'The X.Org Foundation', version 11.0.12302006
>>> System Description: Ubuntu 24.04.1 LTS
>>>
>>> Configured using:
>>> 'configure --with-native-compilation=aot --with-tree-sitter --with-gif
>>> --with-png --with-jpeg --with-tiff --with-imagemagick
>>> --with-x-toolkit=gtk3 --with-xwidgets --without-rsvg
>>> 'WEBKIT_CFLAGS=-I/usr/include/webkitgtk-4.1 -I/usr/include/glib-2.0
>>> -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gtk-3.0
>>> -I/usr/include/pango-1.0 -I/usr/include/harfbuzz
>>> -I/usr/include/freetype2 -I/usr/include/libpng16
>>> -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi
>>> -I/usr/include/cairo -I/usr/include/pixman-1
>>> -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu
>>> -I/usr/include/webp -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0
>>> -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0
>>> -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include
>>> -I/usr/include/libsoup-3.0 -I/usr/include/sysprof-6 -pthread '
>>> 'WEBKIT_LIBS=-lwebkit2gtk-4.1 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0
>>> -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo
>>> -lgdk_pixbuf-2.0 -lsoup-3.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread
>>> -lglib-2.0 -lgio-2.0 -ljavascriptcoregtk-4.1 -lgobject-2.0 -lglib-2.0 '
>>> CPPFLAGS=-I/usr/lib/gcc/x86_64-linux-gnu/14/include --with-mailutils'
>>>
>>> Configured features:
>>> CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK
>>> JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
>>> PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
>>> WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB
>>>
>>> Important settings:
>>> value of $LC_MONETARY: be_BY.UTF-8
>>> value of $LC_NUMERIC: be_BY.UTF-8
>>> value of $LC_TIME: be_BY.UTF-8
>>> value of $LANG: en_US.UTF-8
>>> locale-coding-system: utf-8-unix
>>>
>>> Major mode: ELisp/l
>>>
>>> Minor modes in effect:
>>> windmove-mode: t
>>> savehist-mode: t
>>> eshell-syntax-highlighting-global-mode: t
>>> global-evil-collection-unimpaired-mode: t
>>> evil-collection-unimpaired-mode: t
>>> global-evil-surround-mode: t
>>> evil-surround-mode: t
>>> evil-mode: t
>>> evil-local-mode: t
>>> global-org-modern-mode: t
>>> envrc-global-mode: t
>>> envrc-mode: t
>>> eat-eshell-visual-command-mode: t
>>> eat-eshell-mode: t
>>> shackle-mode: t
>>> popper-echo-mode: t
>>> popper-mode: t
>>> global-git-commit-mode: t
>>> magit-auto-revert-mode: t
>>> all-the-icons-completion-mode: t
>>> marginalia-mode: t
>>> vertico-mode: t
>>> global-fish-completion-mode: t
>>> fish-completion-mode: t
>>> corfu-popupinfo-mode: t
>>> corfu-history-mode: t
>>> corfu-echo-mode: t
>>> global-corfu-mode: t
>>> corfu-mode: t
>>> yas-global-mode: t
>>> yas-minor-mode: t
>>> which-key-mode: t
>>> global-treesit-auto-mode: t
>>> global-undo-tree-mode: t
>>> undo-tree-mode: t
>>> delete-selection-mode: t
>>> global-auto-revert-mode: t
>>> save-place-mode: t
>>> electric-pair-mode: t
>>> recentf-mode: t
>>> global-display-line-numbers-mode: t
>>> display-line-numbers-mode: t
>>> override-global-mode: t
>>> tooltip-mode: t
>>> show-paren-mode: t
>>> electric-indent-mode: t
>>> mouse-wheel-mode: t
>>> tab-bar-mode: t
>>> file-name-shadow-mode: t
>>> global-font-lock-mode: t
>>> font-lock-mode: t
>>> minibuffer-regexp-mode: t
>>> line-number-mode: t
>>> transient-mark-mode: t
>>> auto-composition-mode: t
>>> auto-encryption-mode: t
>>> auto-compression-mode: t
>>>
>>> Load-path shadows:
>>> /home/wurfkreuz/.emacs.d/elpa/eat/eat hides /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat
>>> /home/wurfkreuz/.emacs.d/elpa/eat/eat-tests hides /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat-tests
>>> /home/wurfkreuz/.emacs.d/elpa/transient-20241201.1616/transient hides /home/wurfkreuz/.source/emacs/lisp/transient
>>> ~/.source/org-mode/lisp/org-element-ast hides /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
>>> ~/.source/org-mode/lisp/org-list hides /home/wurfkreuz/.source/emacs/lisp/org/org-list
>>> ~/.source/org-mode/lisp/org-clock hides /home/wurfkreuz/.source/emacs/lisp/org/org-clock
>>> ~/.source/org-mode/lisp/ob-eval hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
>>> ~/.source/org-mode/lisp/ob-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
>>> ~/.source/org-mode/lisp/ob-table hides /home/wurfkreuz/.source/emacs/lisp/org/ob-table
>>> ~/.source/org-mode/lisp/ol-rmail hides /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
>>> ~/.source/org-mode/lisp/ol-gnus hides /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
>>> ~/.source/org-mode/lisp/ob-shell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
>>> ~/.source/org-mode/lisp/ol-irc hides /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
>>> ~/.source/org-mode/lisp/ob-exp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
>>> ~/.source/org-mode/lisp/ob-tangle hides /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
>>> ~/.source/org-mode/lisp/ob-julia hides /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
>>> ~/.source/org-mode/lisp/ob-fortran hides /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
>>> ~/.source/org-mode/lisp/ob-haskell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
>>> ~/.source/org-mode/lisp/org-refile hides /home/wurfkreuz/.source/emacs/lisp/org/org-refile
>>> ~/.source/org-mode/lisp/org-timer hides /home/wurfkreuz/.source/emacs/lisp/org/org-timer
>>> ~/.source/org-mode/lisp/org-version hides /home/wurfkreuz/.source/emacs/lisp/org/org-version
>>> ~/.source/org-mode/lisp/org-attach-git hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
>>> ~/.source/org-mode/lisp/ob-awk hides /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
>>> ~/.source/org-mode/lisp/ob-C hides /home/wurfkreuz/.source/emacs/lisp/org/ob-C
>>> ~/.source/org-mode/lisp/ol-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
>>> ~/.source/org-mode/lisp/oc-basic hides /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
>>> ~/.source/org-mode/lisp/org-inlinetask hides /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
>>> ~/.source/org-mode/lisp/ob-ref hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
>>> ~/.source/org-mode/lisp/ob-emacs-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
>>> ~/.source/org-mode/lisp/ob-sed hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
>>> ~/.source/org-mode/lisp/org-archive hides /home/wurfkreuz/.source/emacs/lisp/org/org-archive
>>> ~/.source/org-mode/lisp/ob-lua hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
>>> ~/.source/org-mode/lisp/org-goto hides /home/wurfkreuz/.source/emacs/lisp/org/org-goto
>>> ~/.source/org-mode/lisp/org-fold-core hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core
>>> ~/.source/org-mode/lisp/oc-csl hides /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
>>> ~/.source/org-mode/lisp/org hides /home/wurfkreuz/.source/emacs/lisp/org/org
>>> ~/.source/org-mode/lisp/ob-forth hides /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
>>> ~/.source/org-mode/lisp/ox-koma-letter hides /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
>>> ~/.source/org-mode/lisp/ob-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
>>> ~/.source/org-mode/lisp/ol-info hides /home/wurfkreuz/.source/emacs/lisp/org/ol-info
>>> ~/.source/org-mode/lisp/ol-docview hides /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
>>> ~/.source/org-mode/lisp/ox-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
>>> ~/.source/org-mode/lisp/org-crypt hides /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
>>> ~/.source/org-mode/lisp/ob-makefile hides /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
>>> ~/.source/org-mode/lisp/org-plot hides /home/wurfkreuz/.source/emacs/lisp/org/org-plot
>>> ~/.source/org-mode/lisp/ob-ocaml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
>>> ~/.source/org-mode/lisp/org-faces hides /home/wurfkreuz/.source/emacs/lisp/org/org-faces
>>> ~/.source/org-mode/lisp/org-datetree hides /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
>>> ~/.source/org-mode/lisp/ob-lilypond hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
>>> ~/.source/org-mode/lisp/ob-octave hides /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
>>> ~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
>>> ~/.source/org-mode/lisp/ob-sass hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
>>> ~/.source/org-mode/lisp/ob-maxima hides /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
>>> ~/.source/org-mode/lisp/ob-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
>>> ~/.source/org-mode/lisp/ob-python hides /home/wurfkreuz/.source/emacs/lisp/org/ob-python
>>> ~/.source/org-mode/lisp/org-keys hides /home/wurfkreuz/.source/emacs/lisp/org/org-keys
>>> ~/.source/org-mode/lisp/org-pcomplete hides /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
>>> ~/.source/org-mode/lisp/ob-sqlite hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
>>> ~/.source/org-mode/lisp/org-duration hides /home/wurfkreuz/.source/emacs/lisp/org/org-duration
>>> ~/.source/org-mode/lisp/org-id hides /home/wurfkreuz/.source/emacs/lisp/org/org-id
>>> ~/.source/org-mode/lisp/ob-plantuml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
>>> ~/.source/org-mode/lisp/org-macro hides /home/wurfkreuz/.source/emacs/lisp/org/org-macro
>>> ~/.source/org-mode/lisp/ob-ruby hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
>>> ~/.source/org-mode/lisp/ob-groovy hides /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
>>> ~/.source/org-mode/lisp/ox-beamer hides /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
>>> ~/.source/org-mode/lisp/ob-comint hides /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
>>> ~/.source/org-mode/lisp/ox-odt hides /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
>>> ~/.source/org-mode/lisp/ob-calc hides /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
>>> ~/.source/org-mode/lisp/ob-R hides /home/wurfkreuz/.source/emacs/lisp/org/ob-R
>>> ~/.source/org-mode/lisp/org-loaddefs hides /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
>>> ~/.source/org-mode/lisp/ol-man hides /home/wurfkreuz/.source/emacs/lisp/org/ol-man
>>> ~/.source/org-mode/lisp/org-capture hides /home/wurfkreuz/.source/emacs/lisp/org/org-capture
>>> ~/.source/org-mode/lisp/ol-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
>>> ~/.source/org-mode/lisp/ox-texinfo hides /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
>>> ~/.source/org-mode/lisp/ox-ascii hides /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
>>> ~/.source/org-mode/lisp/org-element hides /home/wurfkreuz/.source/emacs/lisp/org/org-element
>>> ~/.source/org-mode/lisp/org-macs hides /home/wurfkreuz/.source/emacs/lisp/org/org-macs
>>> ~/.source/org-mode/lisp/org-compat hides /home/wurfkreuz/.source/emacs/lisp/org/org-compat
>>> ~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
>>> ~/.source/org-mode/lisp/ob-js hides /home/wurfkreuz/.source/emacs/lisp/org/ob-js
>>> ~/.source/org-mode/lisp/ol-bbdb hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
>>> ~/.source/org-mode/lisp/org-fold hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold
>>> ~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
>>> ~/.source/org-mode/lisp/oc-biblatex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
>>> ~/.source/org-mode/lisp/ob-perl hides /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
>>> ~/.source/org-mode/lisp/ob-screen hides /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
>>> ~/.source/org-mode/lisp/org-ctags hides /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
>>> ~/.source/org-mode/lisp/org-table hides /home/wurfkreuz/.source/emacs/lisp/org/org-table
>>> ~/.source/org-mode/lisp/org-persist hides /home/wurfkreuz/.source/emacs/lisp/org/org-persist
>>> ~/.source/org-mode/lisp/ob-scheme hides /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
>>> ~/.source/org-mode/lisp/org-agenda hides /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
>>> ~/.source/org-mode/lisp/oc-natbib hides /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
>>> ~/.source/org-mode/lisp/ob-processing hides /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
>>> ~/.source/org-mode/lisp/org-habit hides /home/wurfkreuz/.source/emacs/lisp/org/org-habit
>>> ~/.source/org-mode/lisp/org-entities hides /home/wurfkreuz/.source/emacs/lisp/org/org-entities
>>> ~/.source/org-mode/lisp/ob-java hides /home/wurfkreuz/.source/emacs/lisp/org/ob-java
>>> ~/.source/org-mode/lisp/ob-gnuplot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
>>> ~/.source/org-mode/lisp/ol-w3m hides /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
>>> ~/.source/org-mode/lisp/ox-org hides /home/wurfkreuz/.source/emacs/lisp/org/ox-org
>>> ~/.source/org-mode/lisp/ox-man hides /home/wurfkreuz/.source/emacs/lisp/org/ox-man
>>> ~/.source/org-mode/lisp/org-lint hides /home/wurfkreuz/.source/emacs/lisp/org/org-lint
>>> ~/.source/org-mode/lisp/org-protocol hides /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
>>> ~/.source/org-mode/lisp/ob-core hides /home/wurfkreuz/.source/emacs/lisp/org/ob-core
>>> ~/.source/org-mode/lisp/ol-eww hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
>>> ~/.source/org-mode/lisp/ox-publish hides /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
>>> ~/.source/org-mode/lisp/org-footnote hides /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
>>> ~/.source/org-mode/lisp/ox-md hides /home/wurfkreuz/.source/emacs/lisp/org/ox-md
>>> ~/.source/org-mode/lisp/org-feed hides /home/wurfkreuz/.source/emacs/lisp/org/org-feed
>>> ~/.source/org-mode/lisp/ol-doi hides /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
>>> ~/.source/org-mode/lisp/ox-html hides /home/wurfkreuz/.source/emacs/lisp/org/ox-html
>>> ~/.source/org-mode/lisp/org-src hides /home/wurfkreuz/.source/emacs/lisp/org/org-src
>>> ~/.source/org-mode/lisp/ob-org hides /home/wurfkreuz/.source/emacs/lisp/org/ob-org
>>> ~/.source/org-mode/lisp/oc-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
>>> ~/.source/org-mode/lisp/org-mouse hides /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
>>> ~/.source/org-mode/lisp/org-colview hides /home/wurfkreuz/.source/emacs/lisp/org/org-colview
>>> ~/.source/org-mode/lisp/ol-mhe hides /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
>>> ~/.source/org-mode/lisp/ob-lob hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
>>> ~/.source/org-mode/lisp/ox-icalendar hides /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
>>> ~/.source/org-mode/lisp/org-tempo hides /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
>>> ~/.source/org-mode/lisp/ob-matlab hides /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
>>> ~/.source/org-mode/lisp/ob-sql hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
>>> ~/.source/org-mode/lisp/ob-dot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
>>> ~/.source/org-mode/lisp/ob-ditaa hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
>>> ~/.source/org-mode/lisp/ob-clojure hides /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
>>> ~/.source/org-mode/lisp/org-indent hides /home/wurfkreuz/.source/emacs/lisp/org/org-indent
>>> ~/.source/org-mode/lisp/org-cycle hides /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
>>> ~/.source/org-mode/lisp/org-mobile hides /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
>>> ~/.source/org-mode/lisp/org-num hides /home/wurfkreuz/.source/emacs/lisp/org/org-num
>>> ~/.source/org-mode/lisp/ob-css hides /home/wurfkreuz/.source/emacs/lisp/org/ob-css
>>> ~/.source/org-mode/lisp/org-attach hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach
>>> ~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox
>>>
>>> Features:
>>> (shadow sort mail-extr emacsbug tramp-cmds pulse color help-fns
>>> radix-tree pcmpl-unix windmove flymake-shellcheck python bug-reference
>>> org-bullets org-indent dired-aux toc-org image-file image-converter
>>> oc-basic ol-eww eww vtable mule-util url-queue mm-url ol-rmail ol-mhe
>>> ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
>>> smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom
>>> gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap
>>> nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus
>>> nnheader range ol-docview doc-view jka-compr image-mode exif ol-bibtex
>>> bibtex ol-bbdb ol-w3m ol-doi org-link-doi vc-git vc-dispatcher em-unix
>>> em-term evil-collection-term term disp-table ehelp em-script em-pred
>>> em-ls em-hist em-glob em-extpipe em-basic em-banner em-elecslash eshell
>>> savehist em-tramp eshell-syntax-highlighting em-prompt em-alias
>>> evil-collection-unimpaired evil-collection-debug evil-collection-magit
>>> evil-collection-docker evil-collection-minibuffer evil-collection-org
>>> evil-collection-dired evil-collection annalist evil-org evil-surround
>>> evil evil-integration evil-maps evil-commands reveal evil-jumps
>>> evil-command-window evil-types evil-search evil-ex evil-macros
>>> evil-repeat evil-states evil-core evil-common rect evil-vars org-modern
>>> org-tempo tempo org-drill persist org-agenda org-download org-attach
>>> url-http url-auth url-gw nsm async embark-org org-element org-persist
>>> org-id org-refile org-element-ast inline avl-tree org ob ob-tangle
>>> ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
>>> org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core
>>> ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc
>>> org-loaddefs cal-menu calendar cal-loaddefs org-version org-compat
>>> org-macs eglot external-completion jsonrpc ert ewoc debug backtrace
>>> systemd conf-mode nix-mode nix-repl nix-shell nix-store nix-log
>>> nix-instantiate nix-shebang nix-format nix yaml-mode haskell-mode
>>> haskell-cabal haskell-utils haskell-font-lock haskell-indentation
>>> haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports
>>> haskell-complete-module haskell-ghc-support flymake-proc dabbrev
>>> haskell-customize dockerfile-mode sh-script executable terraform-mode
>>> noutline outline hcl-mode lua-mode go-mode find-file etags fileloop xref
>>> raku-mode raku-repl raku-imenu raku-indent smie raku-font-lock
>>> raku-detect flymake-hadolint flymake envrc inheritenv eat shackle trace
>>> cl-print popper-echo popper transpose-frame magit-bookmark
>>> magit-submodule magit-blame magit-stash magit-reflog magit-bisect
>>> magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
>>> magit-sequence magit-notes magit-worktree magit-tag magit-merge
>>> magit-branch magit-reset magit-files magit-refs magit-status magit
>>> magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
>>> smerge-mode diff-mode track-changes git-commit log-edit message sendmail
>>> yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config
>>> gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
>>> rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
>>> mailheader pcvs-util add-log magit-core magit-autorevert magit-margin
>>> magit-transient magit-process magit-mode benchmark magit-git magit-base
>>> magit-section cursor-sensor crm hydra lv with-editor server
>>> all-the-icons-completion all-the-icons-dired all-the-icons
>>> all-the-icons-faces data-material data-weathericons data-octicons
>>> data-fileicons data-faicons data-alltheicons embark-consult embark ffap
>>> thingatpt consult bookmark marginalia vertico project zoxide sudo-edit
>>> exec-path-from-shell fish-completion em-cmpl em-dirs esh-mode esh-var
>>> esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
>>> esh-module-loaddefs esh-util cape corfu-popupinfo corfu-history
>>> corfu-echo corfu orderless yasnippet commander f wgrep grep compile
>>> text-property-search which-key docker docker-context docker-volume
>>> docker-network docker-image docker-container docker-faces docker-core
>>> docker-compose docker-process docker-utils tablist advice tablist-filter
>>> semantic/wisent/comp semantic/wisent semantic/wisent/wisent
>>> semantic/util-modes semantic/util semantic pp semantic/tag semantic/lex
>>> semantic/fw mode-local find-func cedet dired dired-loaddefs docker-group
>>> transient edmacro kmacro compat dash aio generator s avy clojure-ts-mode
>>> treesit-auto treesit rose-pine-theme undo-tree diff queue delsel
>>> midnight autorevert filenotify saveplace tramp-cache time-stamp tramp-sh
>>> tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
>>> shell pcomplete comint ansi-osc ring parse-time iso8601 time-date
>>> format-spec ansi-color tramp-loaddefs desktop frameset comp comp-cstr
>>> cl-extra help-mode warnings comp-run comp-common elec-pair recentf
>>> tree-widget wid-edit display-line-numbers use-package use-package-ensure
>>> use-package-delight use-package-diminish use-package-bind-key bind-key
>>> easy-mmode use-package-core all-the-icons-completion-autoloads
>>> all-the-icons-dired-autoloads all-the-icons-autoloads avy-autoloads
>>> cape-autoloads clojure-ts-mode-autoloads commander-autoloads
>>> corfu-autoloads docker-autoloads aio-autoloads dockerfile-mode-autoloads
>>> eat-autoloads emacs-eat-autoloads finder-inf embark-consult-autoloads
>>> consult-autoloads embark-autoloads envrc-autoloads
>>> eshell-syntax-highlighting-autoloads evil-collection-autoloads
>>> annalist-autoloads evil-org-autoloads evil-surround-autoloads
>>> evil-autoloads exec-path-from-shell-autoloads f-autoloads
>>> fish-completion-autoloads flymake-ansible-lint-autoloads
>>> flymake-hadolint-autoloads flymake-shellcheck-autoloads
>>> go-mode-autoloads goto-chg-autoloads haskell-mode-autoloads
>>> hydra-autoloads inheritenv-autoloads lua-mode-autoloads lv-autoloads
>>> magit-autoloads pcase marginalia-autoloads meow-autoloads
>>> nix-mode-autoloads magit-section-autoloads orderless-autoloads
>>> org-bullets-autoloads org-download-autoloads async-autoloads
>>> org-drill-autoloads org-modern-autoloads persist-autoloads
>>> popper-autoloads pyvenv-autoloads raku-mode-autoloads s-autoloads
>>> shackle-autoloads sudo-edit-autoloads swiper-autoloads ivy-autoloads
>>> systemd-autoloads rx tablist-autoloads terraform-mode-autoloads
>>> dash-autoloads hcl-mode-autoloads toc-org-autoloads transient-autoloads
>>> transpose-frame-autoloads treesit-auto-autoloads undo-tree-autoloads
>>> queue-autoloads vertico-autoloads wgrep-autoloads info
>>> with-editor-autoloads yaml-mode-autoloads yasnippet-autoloads
>>> zoxide-autoloads package browse-url url url-proxy url-privacy url-expand
>>> url-methods url-history url-cookie generate-lisp-file url-domsuf
>>> url-util mailcap url-handlers url-parse auth-source cl-seq eieio
>>> eieio-core cl-macs icons password-cache json subr-x map byte-opt gv
>>> bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
>>> cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
>>> elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
>>> tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
>>> newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
>>> rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
>>> font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
>>> simple cl-generic indonesian philippine cham georgian utf-8-lang
>>> misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
>>> cp51932 hebrew greek romanian slovak czech european ethiopic indian
>>> cyrillic chinese composite emoji-zwj charscript charprop case-table
>>> epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
>>> loaddefs theme-loaddefs faces cus-face macroexp files window
>>> text-properties overlay sha1 md5 base64 format env code-pages mule
>>> custom widget keymap hashtable-print-readable backquote threads
>>> xwidget-internal dbusbind inotify lcms2 dynamic-setting
>>> system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
>>> multi-tty move-toolbar make-network-process native-compile emacs)
>>>
>>> Memory information:
>>> ((conses 16 1092583 211653) (symbols 48 57721 53) (strings 32 278315 13612)
>>> (string-bytes 1 8739130) (vectors 16 111852) (vector-slots 8 2563160 82266)
>>> (floats 8 1134 533) (intervals 56 27324 2396) (buffers 992 52))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74739; Package emacs. (Sun, 08 Dec 2024 20:55:01 GMT) Full text and rfc822 format available.

Message #17 received at 74739 <at> debbugs.gnu.org (full text, mbox):

From: Ship Mints <shipmints <at> gmail.com>
To: the_wurfkreuz <the_wurfkreuz <at> proton.me>
Cc: 74739 <at> debbugs.gnu.org
Subject: Re: bug#74739: 31.0.50; eshell/which doesn't return a non-zero exit
 code on not finding a file
Date: Sun, 8 Dec 2024 15:52:20 -0500
[Message part 1 (text/plain, inline)]
Not a big eshell user myself and I can't speak to its history. Reading the
code suggests that return values from functions like eshell/which weren't
considered significant by the authors. Every "print" ultimately seems to
return nil. Not sure if there's a way to detect if errors make it to the
stderr channel eshell is coded to use. I suppose you could write your own
eshell aliases in elisp to return better values. Seems like a lot of work,
though.

On Sun, Dec 8, 2024 at 3:48 PM the_wurfkreuz <the_wurfkreuz <at> proton.me>
wrote:

> But yeah, i'm not an expert on unix, maybe other standard utilities also
> behave like this.
>
> On Sunday, December 8th, 2024 at 23:46, the_wurfkreuz <
> the_wurfkreuz <at> proton.me> wrote:
>
> I understand that eshell built-ins might behave differently from Unix
> commands, but isn't it still inconsistent for eshell/which to use stderr
> (indicating an error) while returning exit code 0 (indicating success)? If
> this isn't an accidental oversight, i'd be interested to know why it was
> designed this way.
>
> On Sunday, December 8th, 2024 at 23:30, Ship Mints <shipmints <at> gmail.com>
> wrote:
>
> I don't know why I'm choosing to answer eshell questions today...
>
> which is an eshell built-in command. You can see this by running
>
> $ which which
> eshell/which is a native-compiled Lisp function in 'esh-cmd.el'.
>
> Try running /usr/bin/false and then echo $? and you'll see the correct
> unix command exit value.
>
> I do not think eshell builtins are intended to behave the same way.
>
> On Sun, Dec 8, 2024 at 11:31 AM the_wurfkreuz via Bug reports for GNU
> Emacs, the Swiss army knife of text editors <bug-gnu-emacs <at> gnu.org> wrote:
>
>> eshell/which doesn't return a non-zero exit code on not finding a file.
>> Yet it sends the output to stderr. It looks like there is an
>> inconsistency.
>>
>> Steps to reproduce:
>>
>> ~ $ which test-file
>> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
>> ~ $ which test-file | grep theoretical
>> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
>> ~ $ echo $?
>> 0
>> ~ $ which test-file 2>&1 | grep theoretical
>> ~ [1] $
>>
>>
>>
>> In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>> 3.24.41, cairo version 1.18.0) of 2024-12-06 built on
>> wurfkreuz-B650M-PG-Riptide
>> Repository revision: 9ddec89e422d0dd6e9069731b8f2dd2c90aa5607
>> Repository branch: master
>> Windowing system distributor 'The X.Org Foundation', version
>> 11.0.12302006
>> System Description: Ubuntu 24.04.1 LTS
>>
>> Configured using:
>> 'configure --with-native-compilation=aot --with-tree-sitter --with-gif
>> --with-png --with-jpeg --with-tiff --with-imagemagick
>> --with-x-toolkit=gtk3 --with-xwidgets --without-rsvg
>> 'WEBKIT_CFLAGS=-I/usr/include/webkitgtk-4.1 -I/usr/include/glib-2.0
>> -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gtk-3.0
>> -I/usr/include/pango-1.0 -I/usr/include/harfbuzz
>> -I/usr/include/freetype2 -I/usr/include/libpng16
>> -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi
>> -I/usr/include/cairo -I/usr/include/pixman-1
>> -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu
>> -I/usr/include/webp -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0
>> -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0
>> -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include
>> -I/usr/include/libsoup-3.0 -I/usr/include/sysprof-6 -pthread '
>> 'WEBKIT_LIBS=-lwebkit2gtk-4.1 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0
>> -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo
>> -lgdk_pixbuf-2.0 -lsoup-3.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread
>> -lglib-2.0 -lgio-2.0 -ljavascriptcoregtk-4.1 -lgobject-2.0 -lglib-2.0 '
>> CPPFLAGS=-I/usr/lib/gcc/x86_64-linux-gnu/14/include --with-mailutils'
>>
>> Configured features:
>> CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK
>> JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
>> PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
>> WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB
>>
>> Important settings:
>> value of $LC_MONETARY: be_BY.UTF-8
>> value of $LC_NUMERIC: be_BY.UTF-8
>> value of $LC_TIME: be_BY.UTF-8
>> value of $LANG: en_US.UTF-8
>> locale-coding-system: utf-8-unix
>>
>> Major mode: ELisp/l
>>
>> Minor modes in effect:
>> windmove-mode: t
>> savehist-mode: t
>> eshell-syntax-highlighting-global-mode: t
>> global-evil-collection-unimpaired-mode: t
>> evil-collection-unimpaired-mode: t
>> global-evil-surround-mode: t
>> evil-surround-mode: t
>> evil-mode: t
>> evil-local-mode: t
>> global-org-modern-mode: t
>> envrc-global-mode: t
>> envrc-mode: t
>> eat-eshell-visual-command-mode: t
>> eat-eshell-mode: t
>> shackle-mode: t
>> popper-echo-mode: t
>> popper-mode: t
>> global-git-commit-mode: t
>> magit-auto-revert-mode: t
>> all-the-icons-completion-mode: t
>> marginalia-mode: t
>> vertico-mode: t
>> global-fish-completion-mode: t
>> fish-completion-mode: t
>> corfu-popupinfo-mode: t
>> corfu-history-mode: t
>> corfu-echo-mode: t
>> global-corfu-mode: t
>> corfu-mode: t
>> yas-global-mode: t
>> yas-minor-mode: t
>> which-key-mode: t
>> global-treesit-auto-mode: t
>> global-undo-tree-mode: t
>> undo-tree-mode: t
>> delete-selection-mode: t
>> global-auto-revert-mode: t
>> save-place-mode: t
>> electric-pair-mode: t
>> recentf-mode: t
>> global-display-line-numbers-mode: t
>> display-line-numbers-mode: t
>> override-global-mode: t
>> tooltip-mode: t
>> show-paren-mode: t
>> electric-indent-mode: t
>> mouse-wheel-mode: t
>> tab-bar-mode: t
>> file-name-shadow-mode: t
>> global-font-lock-mode: t
>> font-lock-mode: t
>> minibuffer-regexp-mode: t
>> line-number-mode: t
>> transient-mark-mode: t
>> auto-composition-mode: t
>> auto-encryption-mode: t
>> auto-compression-mode: t
>>
>> Load-path shadows:
>> /home/wurfkreuz/.emacs.d/elpa/eat/eat hides
>> /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat
>> /home/wurfkreuz/.emacs.d/elpa/eat/eat-tests hides
>> /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat-tests
>> /home/wurfkreuz/.emacs.d/elpa/transient-20241201.1616/transient hides
>> /home/wurfkreuz/.source/emacs/lisp/transient
>> ~/.source/org-mode/lisp/org-element-ast hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
>> ~/.source/org-mode/lisp/org-list hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-list
>> ~/.source/org-mode/lisp/org-clock hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-clock
>> ~/.source/org-mode/lisp/ob-eval hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
>> ~/.source/org-mode/lisp/ob-lisp hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
>> ~/.source/org-mode/lisp/ob-table hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-table
>> ~/.source/org-mode/lisp/ol-rmail hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
>> ~/.source/org-mode/lisp/ol-gnus hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
>> ~/.source/org-mode/lisp/ob-shell hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
>> ~/.source/org-mode/lisp/ol-irc hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
>> ~/.source/org-mode/lisp/ob-exp hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
>> ~/.source/org-mode/lisp/ob-tangle hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
>> ~/.source/org-mode/lisp/ob-julia hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
>> ~/.source/org-mode/lisp/ob-fortran hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
>> ~/.source/org-mode/lisp/ob-haskell hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
>> ~/.source/org-mode/lisp/org-refile hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-refile
>> ~/.source/org-mode/lisp/org-timer hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-timer
>> ~/.source/org-mode/lisp/org-version hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-version
>> ~/.source/org-mode/lisp/org-attach-git hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
>> ~/.source/org-mode/lisp/ob-awk hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
>> ~/.source/org-mode/lisp/ob-C hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-C
>> ~/.source/org-mode/lisp/ol-bibtex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
>> ~/.source/org-mode/lisp/oc-basic hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
>> ~/.source/org-mode/lisp/org-inlinetask hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
>> ~/.source/org-mode/lisp/ob-ref hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
>> ~/.source/org-mode/lisp/ob-emacs-lisp hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
>> ~/.source/org-mode/lisp/ob-sed hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
>> ~/.source/org-mode/lisp/org-archive hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-archive
>> ~/.source/org-mode/lisp/ob-lua hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
>> ~/.source/org-mode/lisp/org-goto hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-goto
>> ~/.source/org-mode/lisp/org-fold-core hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core
>> ~/.source/org-mode/lisp/oc-csl hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
>> ~/.source/org-mode/lisp/org hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org
>> ~/.source/org-mode/lisp/ob-forth hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
>> ~/.source/org-mode/lisp/ox-koma-letter hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
>> ~/.source/org-mode/lisp/ob-eshell hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
>> ~/.source/org-mode/lisp/ol-info hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-info
>> ~/.source/org-mode/lisp/ol-docview hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
>> ~/.source/org-mode/lisp/ox-latex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
>> ~/.source/org-mode/lisp/org-crypt hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
>> ~/.source/org-mode/lisp/ob-makefile hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
>> ~/.source/org-mode/lisp/org-plot hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-plot
>> ~/.source/org-mode/lisp/ob-ocaml hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
>> ~/.source/org-mode/lisp/org-faces hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-faces
>> ~/.source/org-mode/lisp/org-datetree hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
>> ~/.source/org-mode/lisp/ob-lilypond hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
>> ~/.source/org-mode/lisp/ob-octave hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
>> ~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
>> ~/.source/org-mode/lisp/ob-sass hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
>> ~/.source/org-mode/lisp/ob-maxima hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
>> ~/.source/org-mode/lisp/ob-latex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
>> ~/.source/org-mode/lisp/ob-python hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-python
>> ~/.source/org-mode/lisp/org-keys hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-keys
>> ~/.source/org-mode/lisp/org-pcomplete hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
>> ~/.source/org-mode/lisp/ob-sqlite hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
>> ~/.source/org-mode/lisp/org-duration hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-duration
>> ~/.source/org-mode/lisp/org-id hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-id
>> ~/.source/org-mode/lisp/ob-plantuml hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
>> ~/.source/org-mode/lisp/org-macro hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-macro
>> ~/.source/org-mode/lisp/ob-ruby hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
>> ~/.source/org-mode/lisp/ob-groovy hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
>> ~/.source/org-mode/lisp/ox-beamer hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
>> ~/.source/org-mode/lisp/ob-comint hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
>> ~/.source/org-mode/lisp/ox-odt hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
>> ~/.source/org-mode/lisp/ob-calc hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
>> ~/.source/org-mode/lisp/ob-R hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-R
>> ~/.source/org-mode/lisp/org-loaddefs hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
>> ~/.source/org-mode/lisp/ol-man hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-man
>> ~/.source/org-mode/lisp/org-capture hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-capture
>> ~/.source/org-mode/lisp/ol-eshell hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
>> ~/.source/org-mode/lisp/ox-texinfo hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
>> ~/.source/org-mode/lisp/ox-ascii hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
>> ~/.source/org-mode/lisp/org-element hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-element
>> ~/.source/org-mode/lisp/org-macs hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-macs
>> ~/.source/org-mode/lisp/org-compat hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-compat
>> ~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
>> ~/.source/org-mode/lisp/ob-js hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-js
>> ~/.source/org-mode/lisp/ol-bbdb hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
>> ~/.source/org-mode/lisp/org-fold hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-fold
>> ~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
>> ~/.source/org-mode/lisp/oc-biblatex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
>> ~/.source/org-mode/lisp/ob-perl hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
>> ~/.source/org-mode/lisp/ob-screen hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
>> ~/.source/org-mode/lisp/org-ctags hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
>> ~/.source/org-mode/lisp/org-table hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-table
>> ~/.source/org-mode/lisp/org-persist hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-persist
>> ~/.source/org-mode/lisp/ob-scheme hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
>> ~/.source/org-mode/lisp/org-agenda hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
>> ~/.source/org-mode/lisp/oc-natbib hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
>> ~/.source/org-mode/lisp/ob-processing hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
>> ~/.source/org-mode/lisp/org-habit hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-habit
>> ~/.source/org-mode/lisp/org-entities hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-entities
>> ~/.source/org-mode/lisp/ob-java hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-java
>> ~/.source/org-mode/lisp/ob-gnuplot hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
>> ~/.source/org-mode/lisp/ol-w3m hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
>> ~/.source/org-mode/lisp/ox-org hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-org
>> ~/.source/org-mode/lisp/ox-man hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-man
>> ~/.source/org-mode/lisp/org-lint hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-lint
>> ~/.source/org-mode/lisp/org-protocol hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
>> ~/.source/org-mode/lisp/ob-core hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-core
>> ~/.source/org-mode/lisp/ol-eww hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
>> ~/.source/org-mode/lisp/ox-publish hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
>> ~/.source/org-mode/lisp/org-footnote hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
>> ~/.source/org-mode/lisp/ox-md hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-md
>> ~/.source/org-mode/lisp/org-feed hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-feed
>> ~/.source/org-mode/lisp/ol-doi hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
>> ~/.source/org-mode/lisp/ox-html hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-html
>> ~/.source/org-mode/lisp/org-src hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-src
>> ~/.source/org-mode/lisp/ob-org hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-org
>> ~/.source/org-mode/lisp/oc-bibtex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
>> ~/.source/org-mode/lisp/org-mouse hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
>> ~/.source/org-mode/lisp/org-colview hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-colview
>> ~/.source/org-mode/lisp/ol-mhe hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
>> ~/.source/org-mode/lisp/ob-lob hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
>> ~/.source/org-mode/lisp/ox-icalendar hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
>> ~/.source/org-mode/lisp/org-tempo hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
>> ~/.source/org-mode/lisp/ob-matlab hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
>> ~/.source/org-mode/lisp/ob-sql hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
>> ~/.source/org-mode/lisp/ob-dot hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
>> ~/.source/org-mode/lisp/ob-ditaa hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
>> ~/.source/org-mode/lisp/ob-clojure hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
>> ~/.source/org-mode/lisp/org-indent hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-indent
>> ~/.source/org-mode/lisp/org-cycle hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
>> ~/.source/org-mode/lisp/org-mobile hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
>> ~/.source/org-mode/lisp/org-num hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-num
>> ~/.source/org-mode/lisp/ob-css hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-css
>> ~/.source/org-mode/lisp/org-attach hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-attach
>> ~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox
>>
>> Features:
>> (shadow sort mail-extr emacsbug tramp-cmds pulse color help-fns
>> radix-tree pcmpl-unix windmove flymake-shellcheck python bug-reference
>> org-bullets org-indent dired-aux toc-org image-file image-converter
>> oc-basic ol-eww eww vtable mule-util url-queue mm-url ol-rmail ol-mhe
>> ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
>> smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom
>> gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap
>> nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus
>> nnheader range ol-docview doc-view jka-compr image-mode exif ol-bibtex
>> bibtex ol-bbdb ol-w3m ol-doi org-link-doi vc-git vc-dispatcher em-unix
>> em-term evil-collection-term term disp-table ehelp em-script em-pred
>> em-ls em-hist em-glob em-extpipe em-basic em-banner em-elecslash eshell
>> savehist em-tramp eshell-syntax-highlighting em-prompt em-alias
>> evil-collection-unimpaired evil-collection-debug evil-collection-magit
>> evil-collection-docker evil-collection-minibuffer evil-collection-org
>> evil-collection-dired evil-collection annalist evil-org evil-surround
>> evil evil-integration evil-maps evil-commands reveal evil-jumps
>> evil-command-window evil-types evil-search evil-ex evil-macros
>> evil-repeat evil-states evil-core evil-common rect evil-vars org-modern
>> org-tempo tempo org-drill persist org-agenda org-download org-attach
>> url-http url-auth url-gw nsm async embark-org org-element org-persist
>> org-id org-refile org-element-ast inline avl-tree org ob ob-tangle
>> ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
>> org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core
>> ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc
>> org-loaddefs cal-menu calendar cal-loaddefs org-version org-compat
>> org-macs eglot external-completion jsonrpc ert ewoc debug backtrace
>> systemd conf-mode nix-mode nix-repl nix-shell nix-store nix-log
>> nix-instantiate nix-shebang nix-format nix yaml-mode haskell-mode
>> haskell-cabal haskell-utils haskell-font-lock haskell-indentation
>> haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports
>> haskell-complete-module haskell-ghc-support flymake-proc dabbrev
>> haskell-customize dockerfile-mode sh-script executable terraform-mode
>> noutline outline hcl-mode lua-mode go-mode find-file etags fileloop xref
>> raku-mode raku-repl raku-imenu raku-indent smie raku-font-lock
>> raku-detect flymake-hadolint flymake envrc inheritenv eat shackle trace
>> cl-print popper-echo popper transpose-frame magit-bookmark
>> magit-submodule magit-blame magit-stash magit-reflog magit-bisect
>> magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
>> magit-sequence magit-notes magit-worktree magit-tag magit-merge
>> magit-branch magit-reset magit-files magit-refs magit-status magit
>> magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
>> smerge-mode diff-mode track-changes git-commit log-edit message sendmail
>> yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config
>> gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
>> rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
>> mailheader pcvs-util add-log magit-core magit-autorevert magit-margin
>> magit-transient magit-process magit-mode benchmark magit-git magit-base
>> magit-section cursor-sensor crm hydra lv with-editor server
>> all-the-icons-completion all-the-icons-dired all-the-icons
>> all-the-icons-faces data-material data-weathericons data-octicons
>> data-fileicons data-faicons data-alltheicons embark-consult embark ffap
>> thingatpt consult bookmark marginalia vertico project zoxide sudo-edit
>> exec-path-from-shell fish-completion em-cmpl em-dirs esh-mode esh-var
>> esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
>> esh-module-loaddefs esh-util cape corfu-popupinfo corfu-history
>> corfu-echo corfu orderless yasnippet commander f wgrep grep compile
>> text-property-search which-key docker docker-context docker-volume
>> docker-network docker-image docker-container docker-faces docker-core
>> docker-compose docker-process docker-utils tablist advice tablist-filter
>> semantic/wisent/comp semantic/wisent semantic/wisent/wisent
>> semantic/util-modes semantic/util semantic pp semantic/tag semantic/lex
>> semantic/fw mode-local find-func cedet dired dired-loaddefs docker-group
>> transient edmacro kmacro compat dash aio generator s avy clojure-ts-mode
>> treesit-auto treesit rose-pine-theme undo-tree diff queue delsel
>> midnight autorevert filenotify saveplace tramp-cache time-stamp tramp-sh
>> tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
>> shell pcomplete comint ansi-osc ring parse-time iso8601 time-date
>> format-spec ansi-color tramp-loaddefs desktop frameset comp comp-cstr
>> cl-extra help-mode warnings comp-run comp-common elec-pair recentf
>> tree-widget wid-edit display-line-numbers use-package use-package-ensure
>> use-package-delight use-package-diminish use-package-bind-key bind-key
>> easy-mmode use-package-core all-the-icons-completion-autoloads
>> all-the-icons-dired-autoloads all-the-icons-autoloads avy-autoloads
>> cape-autoloads clojure-ts-mode-autoloads commander-autoloads
>> corfu-autoloads docker-autoloads aio-autoloads dockerfile-mode-autoloads
>> eat-autoloads emacs-eat-autoloads finder-inf embark-consult-autoloads
>> consult-autoloads embark-autoloads envrc-autoloads
>> eshell-syntax-highlighting-autoloads evil-collection-autoloads
>> annalist-autoloads evil-org-autoloads evil-surround-autoloads
>> evil-autoloads exec-path-from-shell-autoloads f-autoloads
>> fish-completion-autoloads flymake-ansible-lint-autoloads
>> flymake-hadolint-autoloads flymake-shellcheck-autoloads
>> go-mode-autoloads goto-chg-autoloads haskell-mode-autoloads
>> hydra-autoloads inheritenv-autoloads lua-mode-autoloads lv-autoloads
>> magit-autoloads pcase marginalia-autoloads meow-autoloads
>> nix-mode-autoloads magit-section-autoloads orderless-autoloads
>> org-bullets-autoloads org-download-autoloads async-autoloads
>> org-drill-autoloads org-modern-autoloads persist-autoloads
>> popper-autoloads pyvenv-autoloads raku-mode-autoloads s-autoloads
>> shackle-autoloads sudo-edit-autoloads swiper-autoloads ivy-autoloads
>> systemd-autoloads rx tablist-autoloads terraform-mode-autoloads
>> dash-autoloads hcl-mode-autoloads toc-org-autoloads transient-autoloads
>> transpose-frame-autoloads treesit-auto-autoloads undo-tree-autoloads
>> queue-autoloads vertico-autoloads wgrep-autoloads info
>> with-editor-autoloads yaml-mode-autoloads yasnippet-autoloads
>> zoxide-autoloads package browse-url url url-proxy url-privacy url-expand
>> url-methods url-history url-cookie generate-lisp-file url-domsuf
>> url-util mailcap url-handlers url-parse auth-source cl-seq eieio
>> eieio-core cl-macs icons password-cache json subr-x map byte-opt gv
>> bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
>> cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
>> elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
>> tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
>> newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
>> rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
>> font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
>> simple cl-generic indonesian philippine cham georgian utf-8-lang
>> misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
>> cp51932 hebrew greek romanian slovak czech european ethiopic indian
>> cyrillic chinese composite emoji-zwj charscript charprop case-table
>> epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
>> loaddefs theme-loaddefs faces cus-face macroexp files window
>> text-properties overlay sha1 md5 base64 format env code-pages mule
>> custom widget keymap hashtable-print-readable backquote threads
>> xwidget-internal dbusbind inotify lcms2 dynamic-setting
>> system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
>> multi-tty move-toolbar make-network-process native-compile emacs)
>>
>> Memory information:
>> ((conses 16 1092583 211653) (symbols 48 57721 53) (strings 32 278315
>> 13612)
>> (string-bytes 1 8739130) (vectors 16 111852) (vector-slots 8 2563160
>> 82266)
>> (floats 8 1134 533) (intervals 56 27324 2396) (buffers 992 52))
>>
>>
>
>
[Message part 2 (text/html, inline)]

Reply sent to Jim Porter <jporterbugs <at> gmail.com>:
You have taken responsibility. (Mon, 09 Dec 2024 04:27:01 GMT) Full text and rfc822 format available.

Notification sent to the_wurfkreuz <the_wurfkreuz <at> proton.me>:
bug acknowledged by developer. (Mon, 09 Dec 2024 04:27:02 GMT) Full text and rfc822 format available.

Message #22 received at 74739-done <at> debbugs.gnu.org (full text, mbox):

From: Jim Porter <jporterbugs <at> gmail.com>
To: the_wurfkreuz <the_wurfkreuz <at> proton.me>, 74739-done <at> debbugs.gnu.org
Subject: Re: bug#74739: 31.0.50; eshell/which doesn't return a non-zero exit
 code on not finding a file
Date: Sun, 8 Dec 2024 20:25:16 -0800
On 12/8/2024 8:30 AM, the_wurfkreuz via Bug reports for GNU Emacs, the 
Swiss army knife of text editors wrote:
> eshell/which doesn't return a non-zero exit code on not finding a file. 
> Yet it sends the output to stderr. It looks like there is an inconsistency.

Thanks for noticing this. Fixed in b6c91cdf541. Closing this bug now.





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 06 Jan 2025 12:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 166 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.