I built a simple CLI written in Rust that executes with the command cargo run <ARGUMENTS>
. I want to be able to run the CLI from any directory. I used the clap crate and want to be able to call the script with the name passed to clap: brainfast <ARGUMENTS>
. I am running on macOS.
Asked
Active
Viewed 1,988 times
1

Shepmaster
- 388,571
- 95
- 1,107
- 1,366

Nic Bonetto
- 543
- 1
- 8
- 20
1 Answers
3
This is more like a generic question (and I think a duplicate too, but I can't find any).
You have to copy your executable that is generated by cargo build --release
(you can find it in target/release/
crate_name
) to a folder in your $PATH
.
I'm not an expert in macOS, so I can't tell you what is a folder that is included in the $PATH
, but you can find that out by yourself by opening a terminal and typing echo $PATH
. Use one of the paths and it should be available in your terminal without cargo or using any path.
As an alternative, you can add a folder to your $PATH
variable and put it there, e.g.
export PATH /home/foobar/.bin:$PATH
cp target/release/brainfast /home/foobar/.bin
brainfast abc.txt 1 3 99 u

Shepmaster
- 388,571
- 95
- 1,107
- 1,366

hellow
- 12,430
- 7
- 56
- 79
-
2It's not the best idea to set any random folder to your $PATH (some malicious app could take advantage of it). – RaidenF Aug 10 '18 at 13:36
-
Can you name an example? You can always use a full path as a malicious app, so why rely on $PATH? – hellow Aug 10 '18 at 14:40
-
@hellow Security issues arise if the directory (or any parent) is writable by a different user than the user who adds it to their path. It's easier to keep track of permissions if you limit yourself to a few dedicated directories for this. – CodesInChaos Aug 11 '18 at 07:33