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

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

9
ฉันจะเพิ่ม $ PATH ให้สะอาดได้อย่างไร?
ฉันต้องการวิธีเพิ่มสิ่งต่าง ๆ ใน $ PATH ทั้งระบบหรือสำหรับผู้ใช้รายบุคคลโดยไม่ต้องเพิ่มพา ธ เดียวกันหลาย ๆ ครั้ง เหตุผลหนึ่งที่จะต้องการที่จะทำเช่นนี้คือเพื่อให้ข้อมูลเพิ่มเติมสามารถทำใน.bashrcซึ่งไม่จำเป็นต้องเข้าสู่ระบบและยังเป็นประโยชน์เพิ่มเติมเกี่ยวกับระบบที่ใช้งาน (เช่น) ซึ่งไม่เคยโทรlightdm.profile ฉันรู้คำถามจัดการกับวิธีการที่ซ้ำกันทำความสะอาดจาก $ PATH แต่ฉันไม่ต้องการที่จะลบข้อมูลที่ซ้ำกัน ฉันต้องการวิธีเพิ่มเส้นทางหากไม่มีอยู่แล้วเท่านั้น
31 shell  path 


1
Bash จะจำเส้นทางที่ผิดไปยังโปรแกรมที่ถูกย้าย / ลบ
เมื่อฉันทำ which pip3 ฉันเข้าใจ /usr/local/bin/pip3 แต่เมื่อฉันพยายามที่จะดำเนินการpip3ฉันได้รับข้อผิดพลาดดังต่อไปนี้: bash: /usr/bin/pip3: No such file or directory นี่เป็นเพราะฉันเพิ่งลบไฟล์นั้น ตอนนี้whichจุดที่คำสั่งรุ่นของผู้อื่นpip3ที่อยู่ใน/usr/local/binแต่เปลือกยังคงจำเส้นทางที่ผิด ฉันจะทำให้มันลืมเส้นทางนั้นได้อย่างไร whichคู่มือบอกว่า which returns the pathnames of the files (or links) which would be executed in the current environment, had its arguments been given as commands in a strictly POSIX-conformant shell. It does this by …
29 bash  path  which 

9
การลบไดเรกทอรีจาก PATH
ฉันพยายามรวบรวม wxWidgets โดยใช้ MingW และฉันมี cygwin ในเส้นทางของฉันซึ่งดูเหมือนว่าจะขัดแย้งกัน ดังนั้นฉันต้องการลบออก/d/Programme/cygwin/binจากตัวแปร PATH และฉันสงสัยว่ามีวิธีที่สง่างามในการทำเช่นนี้หรือไม่ วิธีการที่ไร้เดียงสาจะสะท้อนไปยังไฟล์ลบออกด้วยตัวเองและส่งมัน แต่ฉันคิดว่ามันมีวิธีการที่ดีกว่า

3
จะเปลี่ยน PATH ภายในเชลล์สคริปต์ได้อย่างไร?
ฉันมีหลายโครงการที่ต้องการให้ฉันเปลี่ยนรุ่น Java / Grails / Maven ฉันพยายามจัดการกับสคริปต์บางอย่างที่จะทำให้การเปลี่ยนแปลง ตัวอย่างเช่น: #!/bin/sh export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22 export PATH=$JAVA_HOME/bin:$PATH export GRAILS_HOME=/cygdrive/c/dev/grails-1.0.3 export PATH=$GRAILS_HOME/bin:$PATH export MAVEN_HOME=/cygdrive/c/dev/apache-maven-2.0.11 export PATH=$MAVEN_HOME/bin:$PATH which java which grails which mvn เมื่อสิ่งนี้ดำเนินการมันจะเปลี่ยน PATH ภายในบริบทของสคริปต์ แต่จากนั้นสคริปต์จะสิ้นสุดและไม่มีการเปลี่ยนแปลงใด ๆ ฉันจะรันสคริปต์เพื่อเปลี่ยน PATH ในเชลล์ที่ฉันใช้งานอยู่ได้อย่างไร ฉันใช้ Cygwin

2
PATH แตกต่างกันและ LD_LIBRARY_PATH แตกต่างกันอย่างไร
ฉันมีปัญหาบางอย่างในการทำความเข้าใจความแตกต่างระหว่างและPATH LD_LIBRARY_PATHฉันมีการตั้งค่าการติดตั้งที่ต้องการ pkg.tcl ไฟล์และผมไม่ได้ที่จะเพิ่มเส้นทางไปมันก็ควรจะไปPATHหรือLD_LIBRARY_PATH?
27 path 

2
Bash ไม่พบโปรแกรมแม้ว่าจะอยู่ในเส้นทางของฉัน
ฉันมีโปรแกรมบนเส้นทางของฉัน โปรแกรมรันเมื่อเรียกใช้งานโดยระบุพา ธ แบบเต็ม แต่ไม่พบโปรแกรมเมื่อฉันรันด้วยชื่อของมัน โดยพื้นฐานแล้วฉันต้องการเข้าใจว่าผลลัพธ์ด้านล่างเป็นไปได้อย่างไรและจะแก้ไขอย่างไรเพื่อให้โปรแกรมของฉันสามารถพบได้โดยไม่ต้องระบุเส้นทางแบบเต็ม: root:/usr/local/bin# ./siege **************************************************** siege: could not open /usr/local/bin/etc/siegerc run 'siege.config' to generate a new .siegerc file **************************************************** root:/usr/local/bin# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games root:/usr/local/bin# siege bash: /usr/bin/siege: No such file or directory root:/usr/local/bin# wtf!?!? ฉันใช้ Ubuntu 12.04 โดยใช้ bash นอกจากนี้โปรดทราบว่าผลลัพธ์ของคำเตือนจากการล้อมนั้นไม่เกี่ยวข้องกับวัตถุประสงค์ของคำถามนี้เพราะฉันสนใจเพียงแค่ว่าจะสามารถค้นหาและเรียกใช้โปรแกรมได้หรือไม่
26 bash  path 

2
$ {PATH: +: $ {PATH}} หมายถึงอะไร
ฉันเพิ่งสังเกตเห็นสิ่งต่อไปนี้ในโปรไฟล์ cygwin ของฉันแม่นยำยิ่งขึ้น: /usr/local/bin:/usr/bin${PATH:+:${PATH}} มันหมายความว่าอะไร? ทำไมไม่ใช่แค่ $ PATH นี่คือ 'ถ้า $ PATH มีอยู่แล้วเพิ่ม: $ PATH' หรือไม่ จุดประสงค์ของฉันคือการสลับลำดับและวางเส้นทาง cygwin ที่อยู่ด้านหลังหน้าต่างเส้นทาง ในอดีตฉันจะมี $PATH:/usr/local/bin:/usr/bin แต่สิ่งนี้ทำให้ฉันสับสน บางทีฉันควรจะทำ PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin" การผนวก: เมื่อสิ้นสุด $ PATH?

4
การเพิ่มไปยังเส้นทางเทียบกับการเชื่อมโยงจาก / bin
ผู้ดูแลระบบ sys ของเราติดตั้งแอปพลิเคชันซอฟต์แวร์ (Maven) บนเซิร์ฟเวอร์และบอกให้ทุกคนเพิ่ม/usr/local/maven/bin/โฟลเดอร์ลงในพา ธ ของพวกเขา ฉันคิดว่ามันจะสะดวกกว่าที่จะเชื่อมโยงโปรแกรมบางอย่างในโฟลเดอร์นั้นจาก/binโฟลเดอร์ (หรือโฟลเดอร์อื่น ๆ ที่ทุกคนมีในเส้นทางของพวกเขา) เช่นนี้ ln -s /usr/local/maven/bin/* /bin ถูกต้องหรือไม่ มีผลข้างเคียงที่ซ่อนอยู่กับคำแนะนำของฉันหรือไม่

4
แบ่งปันชื่อแทนและการตั้งค่าเส้นทางระหว่าง zsh และ bash
zshเปลือกที่ผมปกติใช้เป็น ฉันมีนามแฝงหลายสีเพื่อเปิดใช้งานในโปรแกรมบางอย่างเช่นและls grepฉันได้กำหนดเส้นทางที่กำหนดเองเพื่อให้ฉันสามารถเรียกใช้งานโปรแกรมในสถานที่ที่ไม่ได้มาตรฐาน (เช่นใน~/bin/) ฉันจะไม่เปลี่ยนเปลือกรากไปzshแต่ฉันต้องการที่จะแบ่งปันการตั้งค่าเหล่านี้เพื่อให้รากที่สามารถมีได้เช่นกัน ผมพบว่าไม่ได้มีการจัดหาzsh /etc/profileฉันสามารถหามาได้/etc/zsh/zprofileแต่ฉันต้องการวิธีที่เหมาะสมกว่า
24 shell  bash  zsh  path  alias 

2
ทำไม sshd ต้องใช้พา ธ สัมบูรณ์
เหตุใดจึงsshdต้องใช้พา ธ สัมบูรณ์เมื่อรีสตาร์ทเช่น/usr/sbin/sshdแทนที่จะเป็นsshd มีผลกระทบด้านความปลอดภัยหรือไม่? ป.ล. ข้อผิดพลาด: # sshd sshd re-exec requires execution with an absolute path

2
POSIX รับประกันเส้นทางไปยังยูทิลิตี้มาตรฐานหรือไม่?
จาก C วิธีที่ง่ายที่สุดในการใช้ยูทิลิตี้มาตรฐาน (เช่น ps) และอื่น ๆ คืออะไร? POSIX รับประกันว่ามาตรฐานpsนั้นอยู่ใน/bin/psหรือฉันควรรีเซ็ตตัวแปรสภาพแวดล้อม PATH เป็นสิ่งที่ฉันได้รับconfstr(_CS_PATH, pathbuf, n);จากนั้นเรียกใช้ยูทิลิตีผ่าน PATH-search หรือไม่
22 path  c  posix  exec 

1
สิ่งที่ ~ / .local / bin เริ่มต้นอย่างไร มันแพร่หลายแค่ไหน?
ฉันพบเครื่องมือมากขึ้นและมากขึ้นที่ใส่ไฟล์ปฏิบัติการลงใน ~ / .local / bin ฉันแก่แล้วและสำหรับฉัน ~ / bin คือที่สำหรับ $ executables สำหรับปฏิบัติการของฉัน แฟชั่นใหม่ที่บ้าคลั่งนี้มาจากไหน ทำไมผู้คนถึงทำเช่นนี้? มันแพร่หลายแค่ไหน? มันเป็นทางการทุกที่หรือไม่? ไม่ได้อยู่ในข้อกำหนดคุณสมบัติของไดเรกทอรี XDG มีคำถามที่เกี่ยวข้อง: การกระจายใดมี $ HOME / .local / bin ใน $ PATH ความคิดเห็นสำหรับคำถามอื่นอ้างถึงhttps://www.python.org/dev/peps/pep-0370ซึ่งเคยใช้ในปี 2551 มาแล้ว: ทำไมโปรแกรมนี้ถึงติดตั้งลงใน ~ / .local / bin ... นั่นเป็นครั้งแรก เวลาที่ฉันเห็นว่าเกิดขึ้น?

5
Shebang และเส้นทาง
ทำไมกลุ่มแม่บ้านต้องการเส้นทาง? ไม่ถูกต้อง #!ruby แก้ไข #!/usr/local/bin/ruby #!/usr/bin/env ruby ระบบปฏิบัติการควรมีข้อมูลเกี่ยวกับพา ธ สำหรับคำสั่งที่ลงทะเบียนแล้วและทำไมมันยังคาดหวังว่าจะได้รับ?
22 scripting  path 

1
เหตุใดจึงเลือกลำไส้ใหญ่เป็นตัวแยกเส้นทาง
เหตุใดจึง:เลือกcolon ( ) เป็นตัวคั่นพา ธ โปรดทราบว่าฉันหมายถึง "path separator" และไม่ใช่ "directory separator" ตัวคั่นพา ธ เป็นสัญลักษณ์ที่อยู่ระหว่างรายการในPATHตัวแปรสภาพแวดล้อม PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..." ^ this symbol ทุกสิ่งทุกอย่างในคอมพิวเตอร์และซอฟต์แวร์เป็นการตัดสินใจโดยเจตนาของใครบางคน ยกตัวอย่างว่าทำไมตัวหนอนหมายถึง dir บ้าน (และทำไม hjkl สำหรับปุ่มทิศทางใน vi) ฉันชอบที่จะรู้พื้นฐานสำหรับการตัดสินใจครั้งนี้ ข้อเท็จจริงบางอย่างแบบสุ่ม: การมีโคลอนเป็นตัวคั่นพา ธ หมายความว่าไม่สามารถเพิ่มไดเร็กทอรีที่มีโคลอนในชื่อในพา ธ จาก POSIX: เนื่องจาก<colon>เป็นตัวคั่นในบริบทนี้ชื่อไดเรกทอรีที่อาจใช้ใน PATH ไม่ควรมี<colon>อักขระ http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html ดูเหมือนจะเป็นไปไม่ได้ที่จะหนีจากลำไส้ใหญ่ @ Random832 จาก Stack Overflow ตรวจสอบซอร์สโค้ดการจัดการ PATH และไม่พบกลไกการหลบหนี /programming/14661373/how-to-escape-colon-in-path-on-unix
22 path  history 

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