[英]Get shell name with go
我正在運行一個 CLI 應用程序,我想知道用戶的 shell。 我試着用
exec.Command("echo", "$0")
但它記錄$0
。 有沒有一種簡單的方法可以做到這一點?
你可能想要兩件事:
當前進程的 UID
該 UID 的配置外殼
os/user可以給你前者,但在快速搜索 'passwd' 或 'pwent' 或 'getpwent'(適當的 libc 調用)后,我還沒有找到一個可以讓你獲得后者的 go 庫。 /etc/passwd
解析起來很簡單,一旦你有了 UID,它就會包含這些信息,所以這就是我要做的。
Windows 顯然會有所不同,但 Darwin 實際上也可能會忽略此 /etc 文件,並要求您調用 libc 以了解真相。
這也是conceiveable你的程序總是被調用一些其他的shell大於配置之一,如果這是你的關心,你必須使用像去-PS和跟蹤PPIDs,直到你找到的東西,你認為是一個外殼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.