คำถามติดแท็ก path

PATH (ตัวพิมพ์ใหญ่ทั้งหมด) เป็นชื่อของตัวแปรสภาพแวดล้อมบนระบบปฏิบัติการ Unix-like, DOS, OS / 2 และ Microsoft Windows โดยระบุชุดของไดเรกทอรีที่ค้นหาโปรแกรมปฏิบัติการ

11
วิธีเพิ่มเส้นทางไปยัง PATH อย่างถูกต้องได้อย่างไร
ฉันสงสัยว่าจะต้องเพิ่มพา ธ ใหม่ในPATHตัวแปรสภาพแวดล้อมที่ไหน ฉันรู้ว่านี่สามารถทำได้โดยการแก้ไข.bashrc(ตัวอย่าง) แต่ยังไม่ชัดเจนว่าจะทำอย่างไร ทางนี้: export PATH=~/opt/bin:$PATH หรือสิ่งนี้ export PATH=$PATH:~/opt/bin

7
'ไดเรกทอรีทำงาน' คืออะไรเมื่อ cron ประมวลผลงาน?
ฉันมีสคริปต์ที่ทำงานเมื่อฉันเรียกใช้จากบรรทัดคำสั่ง แต่เมื่อฉันกำหนดเวลาด้วยcronฉันพบข้อผิดพลาดที่ไม่สามารถค้นหาไฟล์หรือคำสั่งได้ คำถามของฉันคือสองเท่า: เมื่อฉันจัดตารางเวลางาน cron โดยใช้crontab -eมันใช้ ID ผู้ใช้ของฉันเป็นพื้นฐานสำหรับการอนุญาตหรือไม่ หรือว่าจะใช้ ID ผู้ใช้ cron ของบางประเภทและสิทธิ์ที่เกี่ยวข้อง? เมื่อเปิดใช้งาน cron แล้วไดเรคทอรี่การทำงานคืออะไร? เป็นไดเรกทอรีที่ฉันระบุสคริปต์ให้เรียกใช้หรือไดเรกทอรีอื่นหรือไม่ นี่คืองาน cron ของฉัน: 15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh นี่คือสคริปต์จริง: vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`" echo "$vIP_ADDR" sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt ssmtp XXXXX@gmail.com < emailmsg.txt นี่คือข้อผิดพลาดที่ฉันได้รับเมื่อฉันดูmailข้อความที่ผลิตโดยcron: sed: can't read template.txt: No such file or …

6
ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมของผู้ใช้ได้อย่างไร (ถาวรไม่ใช่เซสชัน)
นี่มันน่ารำคาญ ฉันเห็นคำแนะนำหลายประการ (ทั้งหมดใช้ไฟล์และไวยากรณ์ที่แตกต่างกัน) และไม่ทำงานเลย ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมสำหรับผู้ใช้ที่เฉพาะเจาะจงได้อย่างไร ฉันกำลังบีบเดเบียน ไวยากรณ์ที่แน่นอนที่ฉันควรใส่ในไฟล์เพื่อทำ ABC = "123" คืออะไร?

7
วิธีที่จะทำให้ `sudo 'รักษา $ PATH ได้อย่างไร
ฉันต้องการเรียกใช้โปรแกรมที่ติดตั้งบน / opt / godi / sbin (ไดเรกทอรีที่กำหนดเอง) หากฉันเพิ่มไดเรกทอรีนั้นลงใน PATH ของฉันโดยเพิ่มบรรทัดต่อไปนี้ลงในไฟล์. bashrc ของฉัน export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin จากนั้นฉันสามารถลองเรียกใช้คำสั่งได้ดี (ยกเว้นว่ามันล้มเหลวเพราะมันต้องการ sudo) อย่างไรก็ตามเมื่อฉันพยายามใช้ sudo: sudo godi_console ฉันได้รับข้อผิดพลาดดังต่อไปนี้ sudo: godi_console: command not found การตรวจสอบตัวแปร PATH หลังจากใช้ sudo เผยให้เห็นว่ามันไม่รวม PATH เดียวกันกับที่ฉันเป็นผู้ใช้ปกติ: $ sudo sh # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ทำไม PATH ถึงไม่เหมือนกัน? ฉันกำลังทำอะไรผิดหรือเปล่า? ฉันใช้ Debian Jessie และโชคไม่ดีที่ฉันไม่สามารถแก้ไขปัญหานี้ได้ด้วยการส่งผ่าน …
123 sudo  path 

4
แฟ้มปฏิบัติการค้นหาวัตถุที่ใช้ร่วมกันที่รันไทม์ที่ไหน
ฉันเข้าใจวิธีกำหนดรวมวัตถุที่ใช้ร่วมกันในการเชื่อมโยง / รวบรวมเวลา อย่างไรก็ตามฉันยังสงสัยว่าไฟล์เรียกทำงานค้นหาวัตถุที่ใช้ร่วมกัน ( *.soไลบรารี) ณ เวลาดำเนินการอย่างไร ตัวอย่างเช่นแอปของฉันa.outเรียกฟังก์ชั่นที่กำหนดไว้ในlib.soห้องสมุด หลังจากรวบรวมฉันย้ายไปยังไดเรกทอรีใหม่ของฉันlib.so$HOME ฉันa.outจะบอกให้ไปหาที่นั่นได้อย่างไร

3
มันปลอดภัยที่จะเพิ่ม เส้นทางของฉัน มาทำไม
ฉันเคยเห็นผู้คนพูดถึงคำตอบอื่น ๆ ว่าเป็นความคิดที่ดีที่จะรวมไดเรกทอรีการทำงานปัจจุบัน (' ') ในตัวแปรสภาพแวดล้อมของคุณแต่ไม่สามารถค้นหาคำถามเพื่อแก้ไขปัญหาได้โดยเฉพาะ.$PATH ดังนั้นทำไมฉันไม่ควรเพิ่ม.เส้นทางของฉัน และแม้ว่าจะมีคำเตือนทั้งหมดที่ฉันทำอยู่แล้วฉันต้องระวังอะไรบ้าง ปลอดภัยกว่าที่จะเพิ่มไปยังจุดสิ้นสุดมากกว่าการเริ่มต้นหรือไม่
49 path 

16
ลบรายการ $ PATH ซ้ำด้วยคำสั่ง awk
ฉันพยายามเขียนฟังก์ชัน bash shell ที่จะอนุญาตให้ฉันลบสำเนาของไดเรกทอรีที่ซ้ำกันออกจากตัวแปรสภาพแวดล้อม PATH ของฉัน ฉันถูกบอกว่าเป็นไปได้ที่จะบรรลุสิ่งนี้ด้วยคำสั่งหนึ่งบรรทัดโดยใช้awkคำสั่ง แต่ฉันไม่สามารถหาวิธีที่จะทำได้ มีใครรู้บ้าง
48 bash  shell  awk  path 

5
รายการที่ซ้ำกันใน $ PATH มีปัญหาหรือไม่
ฉันแหล่ง bashrc ของเพื่อนของฉันไม่กี่คน ดังนั้นฉันเลยจบลงด้วยการมีรายการซ้ำในตัวแปร $ PATH ของฉัน ฉันไม่แน่ใจว่านี่เป็นปัญหาสำหรับคำสั่งที่ใช้เวลานานในการเริ่มต้นหรือไม่ $ PATH ภายในทำงานอย่างไรในการทุบตี? การมี PATHS มากขึ้นจะทำให้เวลาเริ่มต้นของฉันช้าลงหรือไม่
45 bash  path 

4
แสดงเส้นทางในแบบที่มนุษย์อ่านได้
ฉันต้องการแสดงตัวแปรสภาพแวดล้อม PATH ในแบบที่มนุษย์อ่านได้มากขึ้น $ echo $PATH /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin:/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/bin:/usr/local/git/bin:/Users/arturo/.gvm/groovy/current/bin:/Users/arturo/.gvm/grails/current/bin:/Users/arturo/.gvm/griffon/current/bin:/Users/arturo/.gvm/gradle/current/bin:/Users/arturo/.gvm/lazybones/current/bin:/Users/arturo/.gvm/vertx/current/bin:/Users/arturo/.gvm/bin:/Users/arturo/.gvm/ext:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin ฉันกำลังคิดในบางสิ่งเช่นนี้: $ echo $PATH | some cut and awk magic /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin /Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin /Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin /Users/arturo/.rvm/bin ...

2
การกระจายใดมี $ HOME / .local / bin ใน $ PATH
ตัวอย่าง: ใน Ubuntu มี.localไดเรกทอรีอยู่ในไดเรกทอรีภายในบ้านเสมอและ.profileรวมบรรทัดนี้ด้วย: PATH="$HOME/bin:$HOME/.local/bin:$PATH" $HOME/.local/binไม่มีอยู่โดยค่าเริ่มต้น แต่ถ้ามันถูกสร้างขึ้นมันมีอยู่แล้ว$PATHและสามารถพบไฟล์ที่เรียกทำงานได้ภายใน นี่ไม่ได้กล่าวถึงอย่างแน่นอนในข้อกำหนดคุณสมบัติของไดเรกทอรี XDGแต่ดูเหมือนว่ามาจากมัน สิ่งที่ฉันสงสัยคือถ้านี่เป็นเรื่องปกติมากพอที่จะสันนิษฐานได้ว่ามีอยู่ในการกระจายผู้ใช้ทั่วไป มันเป็นเช่นในอนุพันธ์ของ Debian ทั้งหมดหรืออย่างน้อยก็ Ubuntu แล้วระบบนิเวศ Red Hat / Fedora / CentOS ล่ะ? และอื่น ๆ ด้วย Arch, Suse และสิ่งที่ผู้คนใช้กันทุกวันนี้ ที่จะเพิ่มความชัดเจนนี้เป็นเพียงสำหรับ$HOME/.local/bin, ไม่ $HOME/bin นอกเหนือจากความอยากรู้อยากเห็นรวม BSDs, OS / X และอื่น ๆ หากคุณมีข้อมูล :)

7
ทำไมตัวแปร PATH แตกต่างกันเมื่อทำงานผ่าน sudo และ su
ใน fedora VM ของฉันเมื่อทำงานกับบัญชีผู้ใช้ของฉันฉันมี/usr/local/binในเส้นทางของฉัน: [justin@justin-fedora12 ~]$ env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin และเช่นเดียวกันเมื่อทำงานsu: [justin@justin-fedora12 ~]$ su - Password: [root@justin-fedora12 justin]# env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin อย่างไรก็ตามเมื่อเรียกใช้ผ่านsudoไดเรกทอรีนี้ไม่ได้อยู่ในเส้นทาง: [root@justin-fedora12 justin]# exit [justin@justin-fedora12 ~]$ sudo bash [root@justin-fedora12 ~]# env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin ทำไมเส้นทางที่จะแตกต่างกันเมื่อใช้ผ่านsudo?

3
ฉันจะตั้งค่าไดเรกทอรีย่อยทั้งหมดของไดเรกทอรีเป็น $ PATH ได้อย่างไร
ดูเหมือนว่าเมื่อเพิ่มไดเรกทอรีลงใน $ PATH ไดเรกทอรีย่อยจะไม่ถูกเพิ่มซ้ำ ฉันจะทำอย่างนั้นได้ไหม? หรือมีเหตุผลว่าทำไมถึงไม่รองรับ
38 path 

3
ฉันจะกำจัดคำนำหน้าของ Cygwin / cygdrive ในทุกเส้นทางได้อย่างไร
ฉันเปลี่ยนมาใช้ Cygwin จาก bash shell ที่มาพร้อมกับ Git สำหรับ Windows และพบปัญหาแปลก ๆ มีคนคิดว่าเป็นความคิดที่ดีที่จะเพิ่ม/cygdrive/ในทุกเส้นทางในขณะที่ฉันคิดว่ามันเป็นความคิดที่น่าเกลียดอย่างน่ากลัว ฉันสามารถระบุได้ว่าฉันสามารถแก้ไขได้บางส่วนด้วยการเพิ่ม mount --change-cygdrive-prefix / export HOME=/c/Users/BZISAD0 ใน. bashrc ของฉัน แต่ถ้าฉันดูตัวแปร PATH ทุกอย่างยังคงมี / cygdrive / อยู่ ฉันคิดว่าฉันสามารถเขียนสคริปต์เพื่อแก้ไข PATH แต่นั่นเป็นสิ่งที่น่าสนใจยิ่งกว่าสิ่งที่ฉันทำไปแล้ว มีก็จะเป็นวิธีที่ดีกว่าและผมสวยมั่นใจมีตั้งแต่ Git ของเปลือกทุบตีใช้ (AFAIK) รุ่นเก่าของ Cygwin และมีการกำหนดค่าอย่างใดที่จะไม่ย่อหน้า/cygdriveทุกที่ ดังนั้นฉันจะเปลี่ยนลูกบิด "ดูด" เป็นศูนย์ได้อย่างไร
36 path  cygwin  bashrc 

2
PATH ของ cron ตั้งอยู่ที่ไหน?
Cron ไม่ได้ใช้เส้นทางของผู้ใช้ที่เป็น crontab และมีของตัวเองแทน มันสามารถเปลี่ยนแปลงได้อย่างง่ายดายโดยการเพิ่มPATH=/foo/barที่จุดเริ่มต้นของ crontab และวิธีแก้ปัญหาแบบคลาสสิกคือการใช้เส้นทางที่แน่นอนไปยังคำสั่งที่เรียกใช้โดย cron แต่เส้นทางที่กำหนดไว้เริ่มต้นของ cron อยู่ที่ไหน? ฉันสร้าง crontab พร้อมเนื้อหาต่อไปนี้ในระบบ Arch (cronie 1.5.1-1) และทดสอบบนกล่อง Ubuntu 16.04.3 LTS ด้วยผลลัพธ์เดียวกัน: $ crontab -l * * * * * echo "$PATH" > /home/terdon/fff ที่พิมพ์: $ cat fff /usr/bin:/bin แต่ทำไม พา ธ ทั้งระบบเริ่มต้นถูกตั้งค่าไว้/etc/profileแต่มีไดเร็กทอรีอื่น: $ grep PATH= /etc/profile PATH="/usr/local/sbin:/usr/local/bin:/usr/bin" ไม่มีอะไรเกี่ยวข้องใน/etc/environmentหรือ/etc/profile.dไฟล์อื่น ๆ …
34 cron  path 

7
อ้างถึงไฟล์ภายใต้ไดเรกทอรีเดียวกันของสคริปต์ที่พบใน $ PATH
ฉันมีไฟล์สคริปต์ทุบตีซึ่งอยู่ภายใต้ไดเรกทอรีบางส่วนที่เพิ่มไปยัง $ PATH เพื่อให้ฉันสามารถเรียกใช้สคริปต์จากไดเรกทอรีใด ๆ มีไฟล์ข้อความอื่นภายใต้ไดเรกทอรีเดียวกันกับสคริปต์ ฉันสงสัยว่าจะอ้างถึงไฟล์ข้อความในสคริปต์ได้อย่างไร ตัวอย่างเช่นหากสคริปต์เป็นเพียงการส่งออกเนื้อหาของไฟล์ข้อความcat textfileจะไม่ทำงานเนื่องจากเมื่อเรียกสคริปต์จากไดเรกทอรีอื่นไฟล์ข้อความจะไม่พบ
33 bash  path 

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