unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Utkarsh Singh <utkarsh190601@gmail.com>
To: 47547@debbugs.gnu.org
Subject: bug#47547: 28.0.50; [PATCH] Eshell cannot 'cd' in directory with 'eshell' as name
Date: Thu, 01 Apr 2021 20:22:05 +0530	[thread overview]
Message-ID: <87h7kqgiqy.fsf@gmail.com> (raw)

Reproduce the error:

(setq eshell-cd-on-directory t) ; in-case you have changed the defaults

Invoke eshell and enter the following commands:

$ /usr/local/share/emacs/28.0.50/lisp/eshell
Read error: Is a directory, /usr/local/share/emacs/28.0.50/lisp/eshell

OR

$ mkdir /tmp/eshell
$ /tmp/eshell
Read error: Is a directory, /tmp/eshell/

So where is the problem?

Checking `eshell-interpreter-alist' value:
((eshell-visual-command-p . eshell-exec-visual)
 ((closure
   (t)
   (file _args)
    (string= (file-name-nondirectory file)
    "eshell"))
  . eshell/source)
 (#f(compiled-function
     (file args)
     #<bytecode -0x47e9576cc9960d2>)
    . eshell-dirs-substitute-cd))
    
We can see eshell is using `file-name-nondirectory' to source file which
leads to the read error.  I suggest to add one more check before
loading file from `eshell/source'. One example of such check is
`file-regular-p' check and hence I drafted this patch.

diff --git a/lisp/eshell/em-script.el b/lisp/eshell/em-script.el
index aecc48610f..6e6ae1229e 100644
--- a/lisp/eshell/em-script.el
+++ b/lisp/eshell/em-script.el
@@ -60,8 +60,9 @@ eshell-script-initialize
   "Initialize the script parsing code."
   (setq-local eshell-interpreter-alist
 	(cons (cons #'(lambda (file _args)
-                        (string= (file-name-nondirectory file)
-                                 "eshell"))
+                        (and (file-regular-p file)
+                             (string= (file-name-nondirectory file))
+                             "eshell"))
                     'eshell/source)
 	      eshell-interpreter-alist))
   (setq-local eshell-complex-commands
-- 
Utkarsh Singh
utkarshsingh.xyz





             reply	other threads:[~2021-04-01 14:52 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-01 14:52 Utkarsh Singh [this message]
2021-04-05 16:04 ` bug#47547: 28.0.50; [PATCH] Eshell cannot 'cd' in directory with 'eshell' as name Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87h7kqgiqy.fsf@gmail.com \
    --to=utkarsh190601@gmail.com \
    --cc=47547@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).