summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbpc2003 <wpesfriendnva@gmail.com>2025-05-23 23:35:03 -0400
committerbpc2003 <wpesfriendnva@gmail.com>2025-05-23 23:35:03 -0400
commit6179b0d37b0edaba065e79d8c8e303cd025ccd3d (patch)
tree671f46dba2e2c3d343356adae2c58bf737a622c8
parent795b2cc767b0d6e34fad84de4fe656aafe672728 (diff)
Add command handling
-rwxr-xr-xgoshbin0 -> 2683382 bytes
-rw-r--r--main.go25
2 files changed, 24 insertions, 1 deletions
diff --git a/gosh b/gosh
new file mode 100755
index 0000000..c08d662
--- /dev/null
+++ b/gosh
Binary files differ
diff --git a/main.go b/main.go
index adaab6e..82f5bbf 100644
--- a/main.go
+++ b/main.go
@@ -4,13 +4,36 @@ import (
"bufio"
"fmt"
"os"
+ "os/exec"
+ "path"
+ "strings"
)
func main() {
r := bufio.NewReader(os.Stdin)
+ paths := strings.Split(os.Getenv("PATH"), ":")
for {
+ found := false
cmd, _ := r.ReadString('\n')
- fmt.Print(cmd)
+ args := strings.Split(strings.TrimSpace(cmd), " ")
+ cmd = args[0]
+
+ for i := range paths {
+ if _, err := os.Stat(path.Join(paths[i], cmd)); err == nil {
+ cmd = path.Join(paths[i], cmd)
+ found = true
+ break
+ }
+ }
+ if found {
+ c := exec.Command(cmd, args[1:]...)
+ output, err := c.CombinedOutput()
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err.Error())
+ continue
+ }
+ fmt.Print(string(output))
+ }
}
}