From: Barry Margolin <barmar@alum.mit.edu>
To: help-gnu-emacs@gnu.org
Subject: Re: "source" shell commands
Date: Sat, 24 Mar 2007 11:24:54 -0400 [thread overview]
Message-ID: <barmar-9E3195.11245424032007@comcast.dca.giganews.com> (raw)
In-Reply-To: 85wt16btg5.fsf@lola.goethe.zz
In article <85wt16btg5.fsf@lola.goethe.zz>, David Kastrup <dak@gnu.org>
wrote:
> Tassilo Horn <tassilo@member.fsf.org> writes:
>
> > Matthew Flaschen <matthew.flaschen@gatech.edu> writes:
> >
> >> Is there an elisp function to "source" a shell file; i.e. an
> >> alternative to:
> >>
> >> (shell-command (concat "source \"" (expand-file-name "~/.rc") "\""))
> >
> > Sure.
> >
> > --8<---------------cut here---------------start------------->8---
> > (defun mf-source (file)
> > (interactive "f")
> > (shell-command (concat "source \"" file "\"")))
> > --8<---------------cut here---------------end--------------->8---
>
> Quoting is always good for trouble. I'd rather use
>
> (defun mf-source (file)
> (interactive "f")
> (call-process shell-file-name nil nil nil "source" file))
>
> assuming that you don't care about the output.
First of all, shells don't take a command line to execute as arguments.
Take a look at what happens if you try it from the command line:
$ bash source .bashrc
source: source: No such file or directory
You can do it with the -c option, but then they expect the command to be
in a single argument:
(call-process shell-file-name nil nil nil
"-c" (format "source '%s'" file))
Second, the point of "sourcing" is to execute the commands in the
current process's context. Since call-process and shell-command both
execute a child process, nothing that occurs in the sourced script will
have any effect on the emacs process. So even if you get the syntax
right, it won't do anything different from executing the script normally.
--
Barry Margolin, barmar@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
*** PLEASE don't copy me on replies, I'll read them in the group ***
next prev parent reply other threads:[~2007-03-24 15:24 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.1360.1174733204.7795.help-gnu-emacs@gnu.org>
2007-03-24 13:33 ` "source" shell commands Tassilo Horn
2007-03-24 14:35 ` David Kastrup
2007-03-24 15:24 ` Barry Margolin [this message]
2007-03-24 21:21 ` Matthew Flaschen
2007-03-25 0:08 ` Matthew Flaschen
2007-03-25 10:33 ` Peter Dyballa
2007-03-25 10:55 ` Matthew Flaschen
2007-03-25 11:53 ` Peter Dyballa
2007-03-26 0:44 ` Matthew Flaschen
2007-03-26 8:16 ` Peter Dyballa
2007-03-26 9:59 ` Matthew Flaschen
[not found] ` <mailman.1412.1174823876.7795.help-gnu-emacs@gnu.org>
2007-03-25 22:36 ` Tim X
2007-03-26 0:53 ` Matthew Flaschen
[not found] ` <mailman.1432.1174870550.7795.help-gnu-emacs@gnu.org>
2007-03-26 11:30 ` Tim X
[not found] ` <mailman.1381.1174771402.7795.help-gnu-emacs@gnu.org>
2007-03-25 2:46 ` Tim X
2007-03-25 4:03 ` Matthew Flaschen
[not found] ` <mailman.1397.1174795525.7795.help-gnu-emacs@gnu.org>
2007-03-25 10:56 ` Tim X
2007-03-26 8:13 ` Tassilo Horn
2007-03-26 8:57 ` Matthew Flaschen
[not found] ` <mailman.1436.1174899596.7795.help-gnu-emacs@gnu.org>
2007-03-26 9:08 ` Tassilo Horn
2007-03-26 9:55 ` Matthew Flaschen
2007-03-25 2:32 ` Tim X
2007-03-25 2:59 ` Matthew Flaschen
2007-03-24 10:44 Matthew Flaschen
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=barmar-9E3195.11245424032007@comcast.dca.giganews.com \
--to=barmar@alum.mit.edu \
--cc=help-gnu-emacs@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.
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).