EDITOR: subsidiary program 'emacs -nw' not found [duplicate]











up vote
0
down vote

favorite













This question already has an answer here:




  • Export EDITOR with a flag

    1 answer




I have set up



$ echo $EDITOR
emacs -nw


I was wondering why it is not found here, and how I can solve the problem? Thanks.



$ sdiff -o sdiff.out f1 f2
1 2 3 | 2 3 4
%e1
sdiff: subsidiary program 'emacs -nw' not found


I don't know why an option in $EDITOR is a problem, and where it is required in sdiff source code? I guess it is here http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n459



prog = getenv ("EDITOR");
if (prog)
editor_program = prog;


and here http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1035



execvp (editor_program, (char **) argv);


or http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1018 and http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1024. I am not sure what the program is doing.



For comparison, the following works perfectly fine:



$ eval "$EDITOR"









share|improve this question















marked as duplicate by Jeff Schaller, Thomas, Stephen Kitt, G-Man, Isaac yesterday


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.



















    up vote
    0
    down vote

    favorite













    This question already has an answer here:




    • Export EDITOR with a flag

      1 answer




    I have set up



    $ echo $EDITOR
    emacs -nw


    I was wondering why it is not found here, and how I can solve the problem? Thanks.



    $ sdiff -o sdiff.out f1 f2
    1 2 3 | 2 3 4
    %e1
    sdiff: subsidiary program 'emacs -nw' not found


    I don't know why an option in $EDITOR is a problem, and where it is required in sdiff source code? I guess it is here http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n459



    prog = getenv ("EDITOR");
    if (prog)
    editor_program = prog;


    and here http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1035



    execvp (editor_program, (char **) argv);


    or http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1018 and http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1024. I am not sure what the program is doing.



    For comparison, the following works perfectly fine:



    $ eval "$EDITOR"









    share|improve this question















    marked as duplicate by Jeff Schaller, Thomas, Stephen Kitt, G-Man, Isaac yesterday


    This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

















      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite












      This question already has an answer here:




      • Export EDITOR with a flag

        1 answer




      I have set up



      $ echo $EDITOR
      emacs -nw


      I was wondering why it is not found here, and how I can solve the problem? Thanks.



      $ sdiff -o sdiff.out f1 f2
      1 2 3 | 2 3 4
      %e1
      sdiff: subsidiary program 'emacs -nw' not found


      I don't know why an option in $EDITOR is a problem, and where it is required in sdiff source code? I guess it is here http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n459



      prog = getenv ("EDITOR");
      if (prog)
      editor_program = prog;


      and here http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1035



      execvp (editor_program, (char **) argv);


      or http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1018 and http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1024. I am not sure what the program is doing.



      For comparison, the following works perfectly fine:



      $ eval "$EDITOR"









      share|improve this question
















      This question already has an answer here:




      • Export EDITOR with a flag

        1 answer




      I have set up



      $ echo $EDITOR
      emacs -nw


      I was wondering why it is not found here, and how I can solve the problem? Thanks.



      $ sdiff -o sdiff.out f1 f2
      1 2 3 | 2 3 4
      %e1
      sdiff: subsidiary program 'emacs -nw' not found


      I don't know why an option in $EDITOR is a problem, and where it is required in sdiff source code? I guess it is here http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n459



      prog = getenv ("EDITOR");
      if (prog)
      editor_program = prog;


      and here http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1035



      execvp (editor_program, (char **) argv);


      or http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1018 and http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1024. I am not sure what the program is doing.



      For comparison, the following works perfectly fine:



      $ eval "$EDITOR"




      This question already has an answer here:




      • Export EDITOR with a flag

        1 answer








      emacs editors diffutils sdiff






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited yesterday

























      asked yesterday









      Tim

      1




      1




      marked as duplicate by Jeff Schaller, Thomas, Stephen Kitt, G-Man, Isaac yesterday


      This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.






      marked as duplicate by Jeff Schaller, Thomas, Stephen Kitt, G-Man, Isaac yesterday


      This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          3
          down vote













          It's apparent that sdiff attempted to execute a program named exactly emacs -nw, which didn't exist. Your intention was for sdiff to call emacs with an option -nw followed by the file(s).



          The behavior is confirmed by looking at the sdiff source code, where sdiff populates the preferred editor --directly-- into argv[0], which puts the <space><dash>nw together with the emacs. You could also confirm that sdiff is generally working correctly by setting EDITOR=emacs and observing that it opens emacs.



          If you need the option when opening emacs, then my suggestion would be to create a wrapper script:



          $ cat emacs.sh
          #!/bin/sh

          vi "$@"


          Just kidding, of course. You'd use:



          $ cat emacs.sh
          #!/bin/sh

          emacs -nw "$@"


          ... and then set EDITOR=/path/to/that/emacs.sh






          share|improve this answer



















          • 1




            Did you hack my machine??? The former is exactly what emacs.sh has on it!!! 😂😂😂
            – Filipe Brandenburger
            yesterday










          • Small suggestion to use exec when invoking emacs from the script.
            – Filipe Brandenburger
            yesterday






          • 1




            Indeed, using exec would be a microscopic improvement; one that I noticed only after finding the proposed duplicate. Thanks for the edit!
            – Jeff Schaller
            yesterday


















          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          3
          down vote













          It's apparent that sdiff attempted to execute a program named exactly emacs -nw, which didn't exist. Your intention was for sdiff to call emacs with an option -nw followed by the file(s).



          The behavior is confirmed by looking at the sdiff source code, where sdiff populates the preferred editor --directly-- into argv[0], which puts the <space><dash>nw together with the emacs. You could also confirm that sdiff is generally working correctly by setting EDITOR=emacs and observing that it opens emacs.



          If you need the option when opening emacs, then my suggestion would be to create a wrapper script:



          $ cat emacs.sh
          #!/bin/sh

          vi "$@"


          Just kidding, of course. You'd use:



          $ cat emacs.sh
          #!/bin/sh

          emacs -nw "$@"


          ... and then set EDITOR=/path/to/that/emacs.sh






          share|improve this answer



















          • 1




            Did you hack my machine??? The former is exactly what emacs.sh has on it!!! 😂😂😂
            – Filipe Brandenburger
            yesterday










          • Small suggestion to use exec when invoking emacs from the script.
            – Filipe Brandenburger
            yesterday






          • 1




            Indeed, using exec would be a microscopic improvement; one that I noticed only after finding the proposed duplicate. Thanks for the edit!
            – Jeff Schaller
            yesterday















          up vote
          3
          down vote













          It's apparent that sdiff attempted to execute a program named exactly emacs -nw, which didn't exist. Your intention was for sdiff to call emacs with an option -nw followed by the file(s).



          The behavior is confirmed by looking at the sdiff source code, where sdiff populates the preferred editor --directly-- into argv[0], which puts the <space><dash>nw together with the emacs. You could also confirm that sdiff is generally working correctly by setting EDITOR=emacs and observing that it opens emacs.



          If you need the option when opening emacs, then my suggestion would be to create a wrapper script:



          $ cat emacs.sh
          #!/bin/sh

          vi "$@"


          Just kidding, of course. You'd use:



          $ cat emacs.sh
          #!/bin/sh

          emacs -nw "$@"


          ... and then set EDITOR=/path/to/that/emacs.sh






          share|improve this answer



















          • 1




            Did you hack my machine??? The former is exactly what emacs.sh has on it!!! 😂😂😂
            – Filipe Brandenburger
            yesterday










          • Small suggestion to use exec when invoking emacs from the script.
            – Filipe Brandenburger
            yesterday






          • 1




            Indeed, using exec would be a microscopic improvement; one that I noticed only after finding the proposed duplicate. Thanks for the edit!
            – Jeff Schaller
            yesterday













          up vote
          3
          down vote










          up vote
          3
          down vote









          It's apparent that sdiff attempted to execute a program named exactly emacs -nw, which didn't exist. Your intention was for sdiff to call emacs with an option -nw followed by the file(s).



          The behavior is confirmed by looking at the sdiff source code, where sdiff populates the preferred editor --directly-- into argv[0], which puts the <space><dash>nw together with the emacs. You could also confirm that sdiff is generally working correctly by setting EDITOR=emacs and observing that it opens emacs.



          If you need the option when opening emacs, then my suggestion would be to create a wrapper script:



          $ cat emacs.sh
          #!/bin/sh

          vi "$@"


          Just kidding, of course. You'd use:



          $ cat emacs.sh
          #!/bin/sh

          emacs -nw "$@"


          ... and then set EDITOR=/path/to/that/emacs.sh






          share|improve this answer














          It's apparent that sdiff attempted to execute a program named exactly emacs -nw, which didn't exist. Your intention was for sdiff to call emacs with an option -nw followed by the file(s).



          The behavior is confirmed by looking at the sdiff source code, where sdiff populates the preferred editor --directly-- into argv[0], which puts the <space><dash>nw together with the emacs. You could also confirm that sdiff is generally working correctly by setting EDITOR=emacs and observing that it opens emacs.



          If you need the option when opening emacs, then my suggestion would be to create a wrapper script:



          $ cat emacs.sh
          #!/bin/sh

          vi "$@"


          Just kidding, of course. You'd use:



          $ cat emacs.sh
          #!/bin/sh

          emacs -nw "$@"


          ... and then set EDITOR=/path/to/that/emacs.sh







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited yesterday









          Filipe Brandenburger

          6,1041625




          6,1041625










          answered yesterday









          Jeff Schaller

          36.1k952119




          36.1k952119








          • 1




            Did you hack my machine??? The former is exactly what emacs.sh has on it!!! 😂😂😂
            – Filipe Brandenburger
            yesterday










          • Small suggestion to use exec when invoking emacs from the script.
            – Filipe Brandenburger
            yesterday






          • 1




            Indeed, using exec would be a microscopic improvement; one that I noticed only after finding the proposed duplicate. Thanks for the edit!
            – Jeff Schaller
            yesterday














          • 1




            Did you hack my machine??? The former is exactly what emacs.sh has on it!!! 😂😂😂
            – Filipe Brandenburger
            yesterday










          • Small suggestion to use exec when invoking emacs from the script.
            – Filipe Brandenburger
            yesterday






          • 1




            Indeed, using exec would be a microscopic improvement; one that I noticed only after finding the proposed duplicate. Thanks for the edit!
            – Jeff Schaller
            yesterday








          1




          1




          Did you hack my machine??? The former is exactly what emacs.sh has on it!!! 😂😂😂
          – Filipe Brandenburger
          yesterday




          Did you hack my machine??? The former is exactly what emacs.sh has on it!!! 😂😂😂
          – Filipe Brandenburger
          yesterday












          Small suggestion to use exec when invoking emacs from the script.
          – Filipe Brandenburger
          yesterday




          Small suggestion to use exec when invoking emacs from the script.
          – Filipe Brandenburger
          yesterday




          1




          1




          Indeed, using exec would be a microscopic improvement; one that I noticed only after finding the proposed duplicate. Thanks for the edit!
          – Jeff Schaller
          yesterday




          Indeed, using exec would be a microscopic improvement; one that I noticed only after finding the proposed duplicate. Thanks for the edit!
          – Jeff Schaller
          yesterday



          Popular posts from this blog

          flock() on closed filehandle LOCK_FILE at /usr/bin/apt-mirror

          Mangá

          Eduardo VII do Reino Unido