Closed3
NimでOSのユーザー名とユーザーフォルダ (ホームディレクトリ) のパスを取得する
前提条件
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/"
他にも, 様々なディレクトリのパスを取得したりパスを操作するプロシージャがある。
https://nim-lang.org/docs/appdirs.html
https://nim-lang.org/docs/paths.html
余談
本スクラップの方法を見つける前に, 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にクローズされました