HaydenAscot

HaydenAscot

Hi there, I’m having some trouble with the “System” module, specifically the cmd function. My code is the following, which is exactly the same as the documentation, StackOverflow/Elixir forum answers, etc:

System.cmd("echo", ["Hello"])

I’m getting the following error:

** (ErlangError) Erlang error: :enoent
    (elixir 1.10.4) lib/system.ex:795: System.cmd("echo", ["Hello"], [])
    (elixir 1.10.4) lib/code.ex:926: Code.require_file/2

I understand the “enoent” means “No such file or directory”, however, I don’t understand what file or directory could possibly be required in this case. It’s probably an elementary mistake which wouldn’t surprise me as I’m new to Elixir/Erlang. There are 2 things worth mentioning, in my opinion. The first is that surrounding the words “echo” and “Hello” in single quotes instead of double quotes, so System.cmd(‘echo’, [‘Hello’]), produces a different error:

** (FunctionClauseError) no function clause matching in System.cmd/3

    The following arguments were given to System.cmd/3:

        # 1
        'echo'

        # 2
        ['Hello']

        # 3
        []

    Attempted function clauses (showing 1 out of 1):

        def cmd(+command+, +args+, +opts+) when -is_binary(command)- and +is_list(args)+

    (elixir 1.10.4) lib/system.ex:782: System.cmd/3
    (elixir 1.10.4) lib/code.ex:926: Code.require_file/2

probably unrelated although I’m guessing this means that double quotes and single quotes are different in elixir. The other thing is that the following command works:

IO.puts "echo Hello" |> String.to_charlist |> :os.cmd

Although this one seems to return the result of running the command instead of directly running it in the running shell, hence the IO.puts, and I assume this isn’t the same behaviour as System.cmd
My apologies for the long post, but hopefully we can clear some things up here, and thanks in advance

Showing Posts 1 to 9

mpope

mpope

The function requires a binary (string with double quotes) and not a charlist (string with single quotes). That’s is the argument error that you’re getting. :os.cmd is the Erlang equivalent function.

Are you using Windows or a Unix-like OS?

derek-zhou

derek-zhou

:os.cmd use a shell while System.Cmd doesn’t. In a Unix like os, echo is both a shell builtin and an external command as /bin/echo so both should work. Like the other replier guessed you probrably don’t have /bin/echo

HaydenAscot

HaydenAscot OP

I’m using Windows, probably shouldv’e mentioned it. However, echo does work in windows, no? I also tried dir just in case, and it didn’t work either

NobbZ

NobbZ

In windows echo as well as dir are strict built-in a, there is no way to call them as binary.

You probably need to do something like System.cmd("cmd", ["-c", "echo foo"]) or something like that.

HaydenAscot

HaydenAscot OP

Could you point me to the relevant resources or search terms? At this point I’m not sure what to look for in this case

NobbZ

NobbZ

Back in the days, MS-DOS came with a good help program, very close to man on unix systems, but for actual DOS tools and builtins only.

Not sure if this is still available in todays cmd.exe, but to be honest, I doubt it is… With a bit of luck there is some /help or --help switch for cmd.exe that you can try.

Also, you might try where, to see if a command is available in the PATH. If windows is a nice person, it will tell you that dir is actually a builtin, if its nasty it will just tell you that its not available in PATH.

Also, the information microsoft gives away about what is or is not available in cmd.exe gets more sparse every year, as they try hard to encourage users to do more PowerShell instead.

HaydenAscot

HaydenAscot OP

is it possible to run PowerShell commands from Elixir instead?

NobbZ

NobbZ

Yes, by calling Powershell instead of cmd and passing it the command/script with appropriate command line flags.

derek-zhou

derek-zhou

The first thing I do on Windows is to install msys2 which gives you a sane command line interface.

Cmd is dead. PowerShell is nice however it is not significantly better than bash so I don’t see the point of being different from everybody else.

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New
dillonoconnor
Is there any way to avoid the Hologram compiler running when using iex? It seems like the front-end code could potentially be disregarded...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews