I am trying to pass result of which env to nano by this command nano < which env, but it seems, that I didn't understand the whole concept.

When I execute this I assume that: which env STDOUT will go to the nano STDIN. So this will equal to nano /some/path. But, apparently, I am wrong.

Also I tried which env | nano with same purpose, but output was:

Received SIGHUP or SIGTERM

Can somebody clarify this?

  • 1
    which env | nano -, where - means stdin. – MetNP Nov 29 '16 at 17:35
  • @MetNP same result – IgorNikolaev Nov 29 '16 at 17:37
  • then your nano version is older (must be >=2.2 for stdin feature, you can check with nano -V ). then workarround would be: nano <(which env) – MetNP Nov 29 '16 at 17:41
  • I'm assuming that env in your system is something editable by nano (it's a 64-bit Mach executable on mine, so I don't really want to risk corrupting it), so I substituted the cd command and nano $(which cd) does what you are expecting, at least on OSX. – Thomas N Nov 29 '16 at 17:44
  • @ThomasN @MetNP Yes, also I can nano which env``, but also I hoped for a little bit more detailed answer with explanation how it works and why my solution does not. – IgorNikolaev Nov 29 '16 at 17:48

nano, like most text editors, expects a file name to edit as its command-line argument, not as standard input.

$ which env | nano    # pass as standard input, does not work
$ nano "$(which env)" # pass as command-line argument, works

So it's not working because that's not how nano expects to be used.

With some editors (apparently not your version of nano), you can use:

$ which env | some-other-editor -  # note hyphen as file name

to edit standard input as text (you'd be editing a document with the string "/usr/bin/env", not the program /usr/bin/env itself).

Also, if you want to change delimited names on standard input into arguments, xargs will do that for you.

PS: which doesn't always do what you want, consider command -v instead. For details, see Why not use "which"? What to use then?

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.