簡體   English   中英

使用 go 獲取 shell 名稱

[英]Get shell name with go

我正在運行一個 CLI 應用程序,我想知道用戶的 shell。 我試着用

exec.Command("echo", "$0")

但它記錄$0 有沒有一種簡單的方法可以做到這一點?

你可能想要兩件事:

  1. 當前進程的 UID

  2. 該 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM