]> git.eshelyaron.com Git - emacs.git/commitdiff
Add special '$GID' variable in Eshell
authorJim Porter <jporterbugs@gmail.com>
Sat, 8 Jul 2023 06:18:33 +0000 (23:18 -0700)
committerJim Porter <jporterbugs@gmail.com>
Sat, 8 Jul 2023 19:19:29 +0000 (12:19 -0700)
See bug#64529.

* lisp/eshell/esh-var.el (eshell-variable-aliases-list): Add '$GID'.

* test/lisp/eshell/esh-var-tests.el (esh-var-test/gid-var): New test.

* doc/misc/eshell.texi (Variables): Document '$GID'.

* etc/NEWS: Announce this change (and the previous change for '$UID').

doc/misc/eshell.texi
etc/NEWS
lisp/eshell/esh-var.el
test/lisp/eshell/esh-var-tests.el

index 6e92d59838723a4518289ba9b0ad5190afec1f0e..c637688254202774db2d4cb6c140564d7917ca01 100644 (file)
@@ -993,6 +993,13 @@ variable is connection-aware, so when the current directory is remote,
 its value will be @acronym{UID} for the user associated with that
 remote connection.
 
+@vindex $GID
+@item $GID
+This returns the effective @acronym{GID} for the current user.  Like
+@code{$UID}, this variable is connection-aware, so when the current
+directory is remote, its value will be @acronym{GID} for the user
+associated with that remote connection.
+
 @vindex $_
 @item $_
 This refers to the last argument of the last command.  With a
index 0556e8be58592ec65ebcc72a064296713adbb343..246e6b21838ffa7bc6dc0b2744b19757df26570b 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -202,6 +202,11 @@ or get a sublist of elements 2 through 4 with '$my-list[2..5]'.  For
 more information, see the "(eshell) Dollars Expansion" node in the
 Eshell manual.
 
++++
+*** Eshell's '$UID' and '$GID' variables are now connection-aware.
+Now, when expanding '$UID' or '$GID' in a remote directory, the value
+is the user or group ID associated with the remote connection.
+
 ---
 *** Eshell now uses 'field' properties in its output.
 In particular, this means that pressing the '<home>' key moves the
index 7dcaff1e24f3c5a5fe018bb9e64398e9d789bcb9..c7c0a21d2a9a6dab7781a58eddfba2f51a9fd03a 100644 (file)
@@ -163,6 +163,7 @@ if they are quoted with a backslash."
     ("LINES" ,(lambda () (window-body-height nil 'remap)) t t)
     ("INSIDE_EMACS" eshell-inside-emacs t)
     ("UID" ,(lambda () (file-user-uid)) nil t)
+    ("GID" ,(lambda () (file-group-gid)) nil t)
 
     ;; for esh-ext.el
     ("PATH" (,(lambda () (string-join (eshell-get-path t) (path-separator)))
index 771bd5a419c5fdb772ab7b47c07a87502c9bd630..3e58fe749ddc2eff5f2844f499e35d428ed077c6 100644 (file)
@@ -829,6 +829,10 @@ it, since the setter is nil."
   "Test that $UID is equivalent to (user-uid) for local directories."
   (eshell-command-result-equal "echo $UID" (user-uid)))
 
+(ert-deftest esh-var-test/gid-var ()
+  "Test that $GID is equivalent to (group-gid) for local directories."
+  (eshell-command-result-equal "echo $GID" (group-gid)))
+
 (ert-deftest esh-var-test/last-status-var-lisp-command ()
   "Test using the \"last exit status\" ($?) variable with a Lisp command."
   (with-temp-eshell