ทุบตีตรวจสอบ $ PWD เป็นส่วนหนึ่งของเส้นทางเสมอหรือไม่


15

แบ็คกราวน์: หนึ่งในเพื่อนร่วมงานของฉันที่ไม่ได้มาจากพื้นหลัง Linux ถามฉันเกี่ยวกับการใช้./ก่อนคำสั่งบางคำสั่งและไม่ใช่คำสั่งอื่น ๆ ดังนั้นฉันจึงอธิบายให้เขาฟังว่าPATHทำงานอย่างไรและเลือกไบนารีอย่างไร คำตอบของเขาคือมันโง่และเขาแค่ไม่ต้องการพิมพ์./คำสั่งก่อน

คำถาม: มีวิธีในการปรับเปลี่ยนพฤติกรรมของเชลล์อย่างง่ายดายซึ่ง$PWDเป็นรายการแรกเสมอPATHหรือไม่


อาจเป็นใบ้ (หรืออาจไม่ได้) แต่ทุกสภาพแวดล้อมมีนิสัยแปลก ๆ และนี่คือมุมแหลม Unix shell ทั่วไป
RonJohn

12
มันเป็นมาตรการรักษาความปลอดภัย โดยปกติเชลล์ใช้ในการทำเช่นนี้ (คิดว่าปี 1970) และระบบที่มีผู้ใช้หลายคนถูกโจมตีอย่างกว้างขวางเนื่องจากมัน
Charles Duffy

3
คำตอบของเขาคือเป็นคนโง่ : เพื่อนร่วมงานกล่าวว่าต้องให้การศึกษาตนเองในหัวข้อนี้ คำตอบที่ไม่ถูกต้องแสดงให้เห็นถึงการตอบสนองสไตล์ PHB : ไม่มีความเข้าใจหรือชื่นชมระบบพื้นฐาน
เมฆใน

2
ทำไมไม่เพียงแค่วางไบนารีลงใน~/binและทำให้มันเป็นส่วนหนึ่งของPATH? สิ่งนี้ทำให้การจัดระเบียบเหมือนกัน
Sergiy Kolodyazhnyy

3
@Ziazis บน Windows ไดเรกทอรีปัจจุบันถูกพิจารณาโดยไม่คำนึงว่าเป็นส่วนหนึ่งของPATH(ซึ่งเป็นแหล่งที่มาของการพิจารณาดังกล่าวตามปกติ)
Stephen Kitt

คำตอบ:


55

หากคุณต้องการจริงๆคุณสามารถทำได้โดยเพิ่ม.เส้นทางของคุณ:

export PATH=".:$PATH"

อย่างไรก็ตามนั่นเป็นความคิดที่ไม่ดีเพราะหมายความว่าเชลล์ของคุณจะเลือกคำสั่งใด ๆ ในไดเรกทอรีปัจจุบันตามความชอบของผู้อื่น หากใครบางคน (หรือบางโปรแกรม) วางlsคำสั่งที่เป็นอันตรายในไดเรกทอรีที่คุณใช้บ่อยๆคุณกำลังประสบปัญหา ...


13
นี่เป็นจุดที่ยอดเยี่ยมแม้ว่ามันอาจจะเพียงพอที่จะย้าย ไปยังจุดสิ้นสุดของเส้นทางจากนั้นส่งออก PATH = "$ PATH :. "
Christophe

12
แน่นอนฉันจำได้ว่า.ตอนเริ่มต้นของคุณPATHเป็นค่าเริ่มต้นสำหรับผู้ใช้ปกติ (ถ้าฉันสร้างผู้ใช้ด้วย "sam" บน HP-UX อย่างน้อยฉันไม่แน่ใจเกี่ยวกับ SunOS แบบเก่า) ต่อมาค่าเริ่มต้นนี้ถูกลบเนื่องจากเหตุผลด้านความปลอดภัย หากคุณมี.ไอเท็มชิ้นสุดท้ายของคุณPATHยังมีใครบางคนสามารถหวังการพิมพ์ผิดปกติ
Philippos

6
@Phippippos ใช่ว่าจะเป็น/tmp/slสคริปต์การเล่นตลกที่น่าอับอายในการกำหนดเป้าหมายผู้ใช้ที่มี PATH ดังกล่าว ใน Debian และอนุพันธ์ติดตั้งslแพคเกจที่จะได้รับความคิดของวิธีที่คุณมักจะพิมพ์ในสถานที่ของsl ls
Stéphane Chazelas

ไม่ไม่ใช่ความคิดที่ไม่ดีมันเป็นสิ่งที่ดีโดยเฉพาะถ้าคุณเป็นนักพัฒนา แน่นอนการรักษาสภาพแวดล้อมที่ไม่มีใครลดลงในคำสั่งที่เป็นอันตรายเป็นความคิดที่ดีอีกอย่างหนึ่ง
jamesqf

4
@jamesqf ที่จริงแล้วมันเป็นความคิดที่ดีที่จะพิมพ์./เมื่อคุณต้องการเรียกคำสั่งในไดเรกทอรีปัจจุบัน หรือถ้าไดเรกทอรีปัจจุบันของคุณตามปกติ/project/under/development/binแล้วเพิ่มว่าPATHที่คุณ วิธีนี้จะช่วยแก้กรณีการใช้งานของนักพัฒนาซอฟต์แวร์ของคุณ วาง.ที่จุดเริ่มต้นของคุณPATHเป็นความคิดที่ไม่ดีระยะเวลา
Wildcard

14

แม้ว่านี่ไม่ใช่คำตอบสำหรับคำถามของคุณโดยตรงแนวทางปฏิบัติที่ดีที่สุดคือการสร้างbinไดเรกทอรีในโฮมไดเร็กตอรี่ของคุณเป็น/home/user/bin:

mkdir -p "$HOME/bin"
echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

มีสคริปต์ส่วนตัวของคุณอยู่ในนั้น PATHจะได้รับการสำรวจในลำดับที่คุณกำหนดมันและรันสคริปต์ส่วนบุคคลของคุณโดยไม่.จำเป็น


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.