Function std::env::current_exe
pub fn current_exe() -> Result<PathBuf>
Returns the full filesystem path of the current running executable.
Platform-specific behavior
If the executable was invoked through a symbolic link, some platforms will return the path of the symbolic link and other platforms will return the path of the symbolic link’s target.
If the executable is renamed while it is running, platforms may return the path at the time it was loaded instead of the new path.
Errors
Acquiring the path of the current executable is a platform-specific operation that can fail for a good number of reasons. Some errors can include, but not be limited to, filesystem operations failing or general syscall failures.
Security
The output of this function should not be used in anything that might have security implications. For example:
fn main() { println!("{:?}", std::env::current_exe()); }
On Linux systems, if this is compiled as foo
:
$ rustc foo.rs $ ./foo Ok("/home/alex/foo")
And you make a hard link of the program:
$ ln foo bar
When you run it, you won’t get the path of the original executable, you’ll get the path of the hard link:
$ ./bar Ok("/home/alex/bar")
This sort of behavior has been known to lead to privilege escalation when used incorrectly.
Examples
use std::env; match env::current_exe() { Ok(exe_path) => println!("Path of this executable is: {}", exe_path.display()), Err(e) => println!("failed to get current exe path: {}", e), };
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/env/fn.current_exe.html