如何获取调用PATH中EXE文件的命令行启动路径?
我来帮你搞定这个问题!你的核心需求是让create_hello程序准确获取用户调用它时的命令行工作目录(而不是程序自身存放的目录),然后在这个路径下创建hello.txt文件。下面分几种常见编程语言给出具体实现方案:
1. C/C++ 实现
在C/C++中,你可以使用getcwd()函数来获取当前工作目录(也就是用户调用程序时所在的路径),然后拼接文件名创建文件。示例代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main() { // 获取当前工作目录 char cwd[1024]; if (getcwd(cwd, sizeof(cwd)) == NULL) { perror("getcwd failed"); return 1; } // 拼接hello.txt的完整路径 char file_path[1024]; snprintf(file_path, sizeof(file_path), "%s/hello.txt", cwd); // 创建并打开文件(如果不存在则创建,存在则清空) FILE *file = fopen(file_path, "w"); if (file == NULL) { perror("fopen failed"); return 1; } // 可选:写入内容 fprintf(file, "Hello World!\n"); fclose(file); printf("Successfully created hello.txt at: %s\n", cwd); return 0; }
编译后把可执行文件放到PATH包含的目录(比如/usr/local/bin),不管你在哪个目录调用create_hello,都会在当前目录生成hello.txt。
2. Python 实现
Python里直接用os.getcwd()获取当前工作目录,然后用open()函数创建文件即可:
import os def main(): # 获取当前工作目录 cwd = os.getcwd() file_path = os.path.join(cwd, "hello.txt") # 创建文件并写入内容 with open(file_path, "w") as f: f.write("Hello World!\n") print(f"Successfully created hello.txt at: {cwd}") if __name__ == "__main__": main()
把脚本保存为create_hello,加上可执行权限(chmod +x create_hello),放到PATH目录下就可以使用了。
3. Shell 脚本实现
如果是Shell脚本,那就更简单了——脚本默认就是在当前工作目录执行的,直接创建文件即可:
#!/bin/bash # 直接在当前工作目录创建hello.txt touch hello.txt # 可选:写入内容 echo "Hello World!" > hello.txt echo "Successfully created hello.txt at: $(pwd)"
同样给脚本加可执行权限,放到PATH目录,调用时就会在当前目录生成文件。
关键提醒
很多开发者容易混淆两个路径:
- 程序自身的存放路径(比如
/usr/local/bin/create_hello):可以通过argv[0](C)、sys.argv[0](Python)获取,但这不是你需要的。 - 用户调用程序时的当前工作目录:这才是你要用来创建文件的路径,上面的方案都是获取这个路径的正确方式。
内容的提问来源于stack exchange,提问作者frick
相关产品推荐
相关产品推荐

