ฉันต้องการสร้างสคริปต์ทุบตีที่ต้องดำเนินการด้วย sudo แต่ควรคำนึงถึงชื่อของผู้ใช้ที่ไม่ใช่ sudo ที่ดำเนินการ ดังนั้นหากผู้ใช้bob
รันsudo ./myscript.sh
ฉันอยากmyscript.sh
รู้bob
เป็นผู้ดำเนินการ
ลองดูข้างในmyscript.sh
:
USER=$(whoami)
# Do something that takes into account the username.
ฉันจะทราบชื่อของผู้ใช้ที่วางกระบวนการได้อย่างไร โดยเฉพาะอย่างยิ่งสิ่งที่ฉันควรใช้แทนที่จะwhoami
ได้รับbob
และไม่root
?
ทำไมไม่แก้ไข แก้ไขแล้ว
—
marcio
มันไม่สำคัญเกินไปการแก้ไขจะต้องมีอย่างน้อย 6 ตัวอักษรอย่างน้อยตัวที่แนะนำ
—
nyuszika7h
โอเคฉันเข้าใจ. ขอบคุณสำหรับเคล็ดลับ: DI มักจะใส่ hashbang
—
marcio
#!/usr/bin/env bash
ในสคริปต์ทุบตีของฉัน
hashbang นั้นจะถูกละเว้นหากคุณโทรหาอย่างชัดเจนด้วย
—
nyuszika7h
sh
หรืออย่างอื่น
USER=$(whoami)
นั่นคือไม่ได้เป็นสคริปต์ที่ถูกต้องผมคิดว่าคุณหมายถึง โปรดทราบว่าUSER
มีอยู่แล้วเป็นตัวแปรภายในของเชลล์ นอกจากนี้หากเป็นสคริปต์ทุบตีอย่าใช้โดยใช้sh
ซึ่งมีชุดย่อยของคุณลักษณะที่เข้ากันได้กับ POSIX เท่านั้น