Score:-3

เป็นความคิดที่ดีที่จะใช้ "sudo bash -c" แทน "sudo" ตลอดไปหรือไม่

ธง kz
tmp

ประการแรก เรากำลังพูดถึง Debian/Ubuntu OS เท่านั้น

ประการที่ 2 เรากำลังพูดถึงผู้ใช้ที่ไม่ใช่รูทที่มีสิทธิ์ sudo เท่านั้น



คำถามก็คือว่า

มีบางโอกาสที่ใช้ไม่ได้ sudo bash -c 'คำสั่ง' แต่เท่านั้น คำสั่ง sudo ?

เป็นความคิดที่ดีที่จะใช้ sudo ทุบตี -c แทน ซูโด ตลอดไป?

hr flag
ฉันลงคะแนนเสียงให้ปิดคำถามนี้เนื่องจากมีการถามในหลายไซต์: [ควรใช้ âsudo bash -câ แทน âsudoâ ตลอดไปหรือไม่](https:/ /unix.stackexchange.com/questions/666213/is-it-a-good-idea-to-use-sudo-bash-c-แทน-of-sudo-forever)
tmp avatar
kz flag
tmp
@steeldriver ฉันขอโทษ ฉันยังใหม่กับที่นี่ ฉันสับสนมากว่าไซต์ใดที่คำถามของฉันควรเป็นของ ฉันมักจะเลือกตัวเลือกที่เหมาะสมได้ยากเสมอ แต่ดูเหมือนว่าฉันเพิ่งได้รับ "คำตอบ"
guiverc avatar
cn flag
โปรดทราบว่านี่คือไซต์ Ubuntu สำหรับ Ubuntu และ * เป็นทางการ * รสชาติของ Ubuntu (เช่น https://ubuntu.com/download/flavours) ดังนั้นการใช้ Debian ของคุณจึงดึงคุณออกจากไซต์นี้ พวกเราหลายคนอาจ *ชอบ* และ *ใช้* Debian แต่คุณควรปฏิบัติตามหลักเกณฑ์ของไซต์ (คุณอาจเข้าถึงไซต์นี้โดยใช้ Ubuntu SSO/signon แต่เป็นไซต์ Stack Exchange ดังนั้นจึงไม่ควรถามคำถามในเว็บไซต์ SE อื่นๆ )
Score:1
ธง cw

หากคุณไม่ได้ใช้ ทุบตี, แล้ว ทุบตี -c รันคำสั่งด้วย ทุบตี, และ คำสั่ง sudo รันคำสั่งด้วยเชลล์ของคุณ

หากคุณกำลังใช้ ทุบตี, แล้ว ทุบตี -c สร้าง ทุบตีอีก เพื่อให้คุณเรียกใช้สคริปต์ ซึ่งอาจทำให้เกิดปัญหาเกี่ยวกับตัวแปรได้

ลองตัวอย่างนี้

เอส=2
เสียงสะท้อน $S
bash -c echo $S

คุณจะได้รับผลลัพธ์ที่แตกต่างกัน!

tmp avatar
kz flag
tmp
ขอบคุณสำหรับตัวอย่างที่ดีของคุณ เพียงแค่ทำให้ฉันนึกถึง quote```"``` เรามักจะใช้ ```bash -c "echo $S" ``` กับ quote และฉันได้ผลลัพธ์เดียวกันในกรณีนี้ เช่นกัน.
Shu Shang avatar
cw flag
การไม่ใช้เวอร์ชัน bash -c จะไม่ทำอันตรายใดๆ แก่คุณ และจะไม่สร้างปัญหาในการอ้างถึง ซึ่งหากคุณลืม อาจทำให้เกิดหายนะได้
bac0n avatar
cn flag
@ShuShang ไม่แน่ใจว่าคุณกำลังพยายามอธิบายอะไร `-c` ใช้ 'สตริงคำสั่ง' และอาร์กิวเมนต์ใด ๆ ต่อไปนี้จะถูกกำหนดเป็นพารามิเตอร์ตำแหน่งโดยเริ่มจาก `$0` ในกรณีนี้ `$S` จะกลายเป็น `$0 ` ซึ่งใช้เป็นชื่อของสคริปต์ เช่น `bash -c nonexistent $S` จะให้ `2: line 1: nonexistent: command not found`
bac0n avatar
cn flag
ในกรณีส่วนใหญ่ @tmp คุณควรใช้เครื่องหมายคำพูดเดี่ยว มิฉะนั้น `$S` จะถูกขยายโดยเชลล์ปัจจุบันก่อนที่ `bash -c` จะตีความสตริงคำสั่ง โครงสร้างทั่วไปอาจมีลักษณะดังนี้: `bash -c 'echo "$@"' my-bash 1 2 3 4`
tmp avatar
kz flag
tmp
@bac0n แต่ฉันยังไม่รู้ว่าทำไมในตัวอย่างนี้ข้างต้น มีเพียง bash -c " echo $S " หรือ bash -c " echo ' $S ' " หรือ bash -c " echo " $S " " เท่านั้นที่จะใช้งานได้ รับผลลัพธ์เช่นเดียวกับ echo $S = 2 นั่นจะเป็นอีกคำถามหนึ่งของฉัน คำพูดของ bash -c นั้นมีไว้เพื่ออะไรกันแน่ มีผลโดยตรงต่อคำสั่งภายในหรือไม่?

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา