Closed3

NimでOSのユーザー名とユーザーフォルダ (ホームディレクトリ) のパスを取得する

Lafixier RafinantokaLafixier Rafinantoka

前提条件

import osされているものとする。

実行環境

  • Nim 1.6.10
  • Windows
    • Windows 10
  • Linux
    • Ubuntu 20.04.6 LTS on Windows 10 x86_64 (WSL 2)

ユーザー名の取得

getEnvという, 指定された名前を持つ環境変数を返すプロシージャを使用する。

# Windows
# ケースインセンシティブ
assert getEnv("USERNAME") == "foo"
assert getEnv("username") == "foo"
assert getEnv("uSerNaME") == "foo"

# Linux
# ケースセンシティブ
assert getEnv("LOGNAME") == "foo"
assert getEnv("logname") == ""

ユーザーフォルダ (ホームディレクトリ) のパスの取得

getHomeDirという, 現在のユーザーのホームディレクトリを返すプロシージャを使用する。

# Windows
assert getHomeDir() == "C:\\Users\\foo\\"

# Linux
assert getHomeDir() == "/home/foo/"
Lafixier RafinantokaLafixier Rafinantoka

余談

本スクラップの方法を見つける前に, ChatGPTに「windows上でログインユーザの名前を取得するNimコードを書いて下さい」と投げたらWinAPIを使用するコードを返した。
しかしWinAPIを触りたくなく他の方法を模索しているうちにPythonの関数os.getloginの存在を思い出し, そのドキュメント (https://docs.python.org/ja/3/library/os.html#os.getlogin) を確認すると「環境変数 LOGNAME や USERNAME を調べ」と記載されていた。
そしてNimで環境変数を取得する方法を検索した結果, getEnvプロシージャを紹介するページ (https://runebook.dev/ja/docs/nim/os) がヒットした。

このスクラップは2023/08/25にクローズされました