# System Package system contains some functions about os, runtime, shell command.
## Source: - [https://github.com/duke-git/lancet/blob/main/system/os.go](https://github.com/duke-git/lancet/blob/main/system/os.go)
## Usage: ```go import ( "github.com/duke-git/lancet/v2/system" ) ```
## Index - [IsWindows](#IsWindows) - [IsLinux](#IsLinux) - [IsMac](#IsMac) - [GetOsEnv](#GetOsEnv) - [SetOsEnv](#SetOsEnv) - [RemoveOsEnv](#RemoveOsEnv) - [CompareOsEnv](#CompareOsEnv) - [ExecCommand](#ExecCommand) - [GetOsBits](#GetOsBits)
## Documentation ### IsWindows

Check if current os is windows.

Signature: ```go func IsWindows() bool ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { isOsWindows := system.IsWindows() fmt.Println(isOsWindows) } ``` ### IsLinux

Check if current os is linux.

Signature: ```go func IsLinux() bool ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { isOsLinux := system.IsLinux() fmt.Println(isOsLinux) } ``` ### IsMac

Check if current os is macos.

Signature: ```go func IsMac() bool ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { isOsMac := system.IsMac() fmt.Println(isOsMac) } ``` ### GetOsEnv

Gets the value of the environment variable named by the key.

Signature: ```go func GetOsEnv(key string) string ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { fooEnv := system.GetOsEnv("foo") fmt.Println(fooEnv) } ``` ### SetOsEnv

Sets the value of the environment variable named by the key.

Signature: ```go func SetOsEnv(key, value string) error ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { err := system.SetOsEnv("foo", "foo_value") fmt.Println(err) } ``` ### RemoveOsEnv

Remove a single environment variable.

Signature: ```go func RemoveOsEnv(key string) error ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { err := system.RemoveOsEnv("foo") if err != nil { fmt.Println(err) } } ``` ### CompareOsEnv

Get env named by the key and compare it with comparedEnv.

Signature: ```go func CompareOsEnv(key, comparedEnv string) bool ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { system.SetOsEnv("foo", "foo_value") res := system.CompareOsEnv("foo", "foo_value") fmt.Println(res) //true } ``` ### CompareOsEnv

Execute shell command, return the stdout and stderr string of command, and error if error occur. param `command` is a complete command string, like, ls -a (linux), dir(windows), ping 127.0.0.1. In linux, use /bin/bash -c to execute command, In windows, use powershell.exe to execute command.

Signature: ```go func ExecCommand(command string) (stdout, stderr string, err error) ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { // linux or mac stdout, stderr, err := system.ExecCommand("ls") fmt.Println("std out: ", stdout) fmt.Println("std err: ", stderr) assert.Equal("", stderr) // windows stdout, stderr, err = system.ExecCommand("dir") fmt.Println("std out: ", stdout) fmt.Println("std err: ", stderr) // error command stdout, stderr, err = system.ExecCommand("abc") fmt.Println("std out: ", stdout) fmt.Println("std err: ", stderr) if err != nil { fmt.Println(err.Error()) } } ``` ### GetOsBits

Get current os bits, 32bit or 64bit. return 32 or 64

Signature: ```go func GetOsBits() int ``` Example: ```go import ( "fmt" "github.com/duke-git/lancet/v2/system" ) func main() { osBit := system.GetOsBits() fmt.Println(osBit) } ```