を使用してユーザーのホーム ディレクトリを取得しようとしていますgetenv("$HOME")
が、NULL が返されます。私は何を間違っていますか?
int main(void)
{
char * path;
path = getenv("$HOME");
printf ("The current path is: %s",path);
return 0;
}
を使用してユーザーのホーム ディレクトリを取得しようとしていますgetenv("$HOME")
が、NULL が返されます。私は何を間違っていますか?
int main(void)
{
char * path;
path = getenv("$HOME");
printf ("The current path is: %s",path);
return 0;
}
$
環境変数名はオフのままにします。シェルで使用される場合、$
は名前の一部ではありませんが、変数名が続き、その値を置き換える必要があることをシェルに通知します。
getenv("PATH"); // This is what you really want
そして、オプションで、コンパイルして-Wall
、このような結果になります。(テスト済み...)
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *path;
path = getenv("PATH");
if(path)
printf("The current path is: %s\n", path);
return 0;
}
そうではないgetenv("PATH")
でしょうか?
ホームディレクトリには、次を使用できます
char* homedir = getenv("HOME");
またはあなたが使用することができます
char* homedir = NULL;
struct passwd *pw = getpwuid(getuid());
if (pw)
homedir = pw->pw_dir;
PATH
使用によるexecvp
使用のためにgetenv("PATH")