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

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

3
มีวิธีการเพิ่มไดเรกทอรีไปยัง PATH ของฉันเป็น zsh หากยังไม่มีอยู่หรือไม่?
มีวิธีง่ายๆในการ zsh เพื่อเพิ่มไดเรกทอรีไปยังเส้นทางของฉันเท่านั้นหากมันไม่ได้มีอยู่แล้ว? (หรือโดยทั่วไปตัวแปรสภาพแวดล้อมใด ๆ ) ฉันได้พยายาม: PATH+=/my/directory ... แต่ถ้าถูกดำเนินการสองครั้งระบบจะเพิ่มสองครั้ง
15 zsh  path 

1
ค้นหาไม่ทำงานบนเส้นทาง symlinked?
ถ้าฉันเรียกใช้คำสั่งนี้find $HOME/MySymlinkedPath -name "run*.sh"ไม่มีอะไรเกิดขึ้นและไม่มีข้อผิดพลาด ('MySymlinkedPath' เป็นเส้นทาง symlinked ไปยังฮาร์ดไดรฟ์อื่น ๆ แล้ว $ HOME ของฉัน) สิ่งเหล่านี้ล้มเหลว: find ~/MySymlinkedPath -name "run*.sh" find /home/MyUserName/MySymlinkedPath -name "run*.sh" และเพื่อให้แน่ใจว่าเส้นทางที่ไม่มีอยู่นี้ล้มเหลว (แน่นอน) find $HOME/MySymlinkedPathDUMMYTEST -name "run*.sh"ดังนั้นจึงมีการค้นพบเส้นทาง (เพราะข้อผิดพลาดนั้นไม่ได้เกิดขึ้น) แต่findไม่ได้ทำการค้นหาบนเส้นทางนี้ ใช้งานได้เฉพาะถ้าฉันcd $HOME/MySymlinkedPathก่อนและลบการอ้างอิงเส้นทางเช่นนี้find -name "run*.sh"แต่นั่นไม่ดีสำหรับสคริปต์ของฉัน ข้อมูลเพิ่มเติม : คำสั่งนี้ใช้งานได้ตามปกติls $HOME/MySymlinkedPath/run*.shและถ้าฉันไปที่นั่นcd $HOME/MySymlinkedPathและรันสิ่งนี้ls ..ผลลัพธ์ไม่ใช่สิ่งที่ฉันคาดหวัง - รายการของเส้นทางที่เส้นทาง symlinked ตั้งอยู่ - จะส่งกลับรายการเส้นทางที่แท้จริงของ สื่ออื่น / ฮาร์ดไดรฟ์ !!! …
15 find  symlink  path 

3
bash: iptables: ไม่พบคำสั่ง
ฉันจะแก้ไขiptables: command not foundปัญหาที่เกิดขึ้นกับ Debian 7.6 ได้อย่างไร batman@gotham:~$ uname -a Linux gotham 3.14-0.bpo.2-amd64 #1 SMP Debian 3.14.13-2~bpo70+1 (2014-07-31) x86_64 GNU/Linux batman@gotham:~$ iptables -L bash: iptables: command not found batman@gotham:~$ sudo apt-get install iptables [sudo] password for batman: Reading package lists... Done Building dependency tree Reading state information... Done iptables is …
14 iptables  path 

1
ไฟล์ปฏิบัติการที่ชื่อ 'ทดสอบ' อยู่ใน $ PATH แต่จะไม่ทำงาน
ฉันมีไฟล์ใน $ HOME / bin (ก่อนที่คุณจะถามใช่มันอยู่ในเส้นทางของฉัน) เรียกว่าtestฉันยืนยันว่าสามารถดำเนินการได้ดีเมื่อฉันรันด้วยพา ธ เต็มไปยังไฟล์ อย่างไรก็ตามฉันได้รับปัญหาแปลก ๆ จริง ๆ เมื่อฉันไม่เรียกใช้วิธีนี้ เมื่อฉันเพิ่งรันtestในเทอร์มินัลมันไม่ทำอะไรเลยและส่งคืนทันที ฉันรู้ว่านี่ไม่ใช่ปัญหาในการค้นหาไฟล์ด้วยเหตุผลหลายประการ: ไม่มีข้อความแสดงข้อผิดพลาด โดยปกติหากไม่พบไฟล์หรือไม่สามารถดำเนินการข้อความจะถูกพิมพ์ออกมาโดยบอกว่า การรันwhich testยังคงส่งคืนพา ธ ไฟล์ที่ถูกต้อง น่าจะเป็นที่แปลกประหลาดของทั้งหมด - straceสคริปต์ที่ทำงานได้ดีเมื่อวิ่งผ่าน ฉันพยายามใช้straceเพื่อดูว่าฉันสามารถทราบได้ว่าเกิดอะไรขึ้น แต่เมื่อฉันใช้งานด้วยstraceมันทำงานได้อย่างที่คาดไว้กับปัญหา 0 ข้อ

1
ความแตกต่างระหว่าง $ path กับ $ PATH (ตัวพิมพ์เล็กกับตัวพิมพ์ใหญ่) กับ zsh คืออะไร
ในFreeBSD 12 การใช้zshเชลล์ฉันสังเกตเห็นความแตกต่างนี้เมื่อดู$path(ตัวพิมพ์เล็ก) กับ$PATH(ตัวพิมพ์ใหญ่) echo $path / sbin / bin / usr / sbin / usr / bin / usr / local / sbin / usr / local / bin / usr / home / freebsd / bin echo $PATH sbin /: / bin: / usr / sbin: / usr …
13 zsh  variable  path  array 

1
ตั้งค่า PATH สำหรับหน่วย systemd
หนึ่งจะตั้งค่าเส้นทางสำหรับเปลือกที่ไม่ใช่การเข้าสู่ระบบใน CentOS 7 ได้อย่างไร โดยเฉพาะฉันมีหน่วย systemd /usr/local/texlive/2016/bin/x86_64-linuxที่ต้องการในไบนารี ฉันพยายามที่จะตั้งใน/etc/environmentที่มีแต่แล้วเส้นทางของฉันคือPATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH/usr/local/texlive/2016/bin/x86_64-linux:$PATH:/usr/local/sbin:/usr/sbin ฉันสร้าง/etc/profile.d/texlive.shด้วยexport PATH="/usr/local/texlive/2016/bin/x86_64-linux:${PATH}"แต่ใช้งานได้กับเชลล์ล็อกอินเท่านั้น ฉันดูSet Path สำหรับผู้ใช้ทุกคน (ล็อกอินและเชลล์ที่ไม่ได้เข้าสู่ระบบ)แต่ได้พยายามแก้ไขปัญหาข้างต้นแล้ว ฉันดูที่วิธีเพิ่มเส้นทางไปยังระบบ $ PATH สำหรับเชลล์ที่ไม่ใช่การเข้าสู่ระบบของผู้ใช้และเชลล์ล็อกอินบนเดเบียนแต่ไม่มีวิธีแก้ปัญหาที่ยอมรับได้และฉันไม่แน่ใจว่าฉันต้องการแก้ไข/etc/login.defsเพราะอาจมีการเปลี่ยนแปลงในการอัปเดต
13 centos  systemd  path 

1
ฉันจะหาเส้นทางแบบเต็มของโปรแกรมบนเส้นทางได้อย่างน่าเชื่อถือได้อย่างไร
ฉันต้องการค้นหาเส้นทางของโปรแกรมที่กำหนดในการPATHใช้เชลล์สคริปต์ เส้นทางที่จะต้องเป็นเส้นทางจริงเต็มรูปแบบของโปรแกรมซึ่งสามารถส่งผ่านต่อมาหนึ่งในexec*ฟังก์ชั่นที่ไม่ได้ค้นหาตัวเองเช่นPATHexecv มีโปรแกรมเช่นkillซึ่งมีให้เป็นโปรแกรมจริงและเชลล์ในตัวในเวลาเดียวกัน หากเป็นกรณีนี้ฉันต้องการเส้นทางแบบเต็มไปยังโปรแกรมจริง มีสาธารณูปโภคหลายอย่างที่สามารถหาโปรแกรมบนเป็นPATHตามที่ระบุไว้ในมาตรา 2.9.1.1 คำสั่งค้นหาและการดำเนินการของมาตรฐาน มีwhichซึ่งไม่ได้เป็นส่วนหนึ่งของมาตรฐานใด ๆ มันสามารถเป็นโปรแกรมปกติในบางระบบในขณะที่บางเชลล์ให้มันเป็น builtin ดูเหมือนว่าจะมีอยู่ในระบบและเชลล์ส่วนใหญ่ แต่เชลล์ที่มีเวอร์ชันในตัวก็แค่ส่งคืนชื่อของบิวด์อินแทนที่จะเป็นพา ธ ไปยังไฟล์ที่เรียกใช้งานได้ นอกจากนี้ยังไม่ได้มาตรฐานในทางใดทางหนึ่งและอาจส่งคืนผลลัพธ์ใด ๆ และใช้ตัวเลือกที่แตกต่างกัน bash# which kill /usr/bin/kill dash# which kill /usr/bin/kill fish# which kill /usr/bin/kill mksh# which kill /usr/bin/kill tcsh# which kill kill: shell built-in command. zsh# which kill kill: shell built-in command มีwhenceซึ่งเป็นในตัวของเปลือกหอยไม่กี่คน แต่ไม่สามารถใช้ได้กับกระสุนจำนวนมาก …
12 shell  path 

2
วิธีส่งออก LD_LIBRARY_PATH ไปยังผู้ใช้และบริการระบบทั้งหมด
ฉันต้องการส่งออกLD_LIBRARY_PATHไปยังบริการระบบและผู้ใช้ทั้งหมด บริการของระบบจะทำงานก่อนเข้าสู่ระบบดังนั้นจึง.bashrcไม่สามารถใช้งานได้ ทำอย่างไรจึงจะได้สิ่งนี้?

5
ค้นหาไฟล์ในพา ธ ที่ไม่มี“ อันไหน”?
ฉันสามารถเรียกใช้สคริปต์ได้ (อย่างใด): $ assemble.sh file ... [output] แต่whichหาไม่เจอ: $ which assemble.sh which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:. เป็นไปได้อย่างไร? ฉันจะหาไฟล์นี้ได้จากที่ไหน? ฉันใช้ทุบตี
12 bash  shell  path 

4
ฉันจะแก้ไขเส้นทางของ pip ได้อย่างไร
ฉันพยายามรับ pip ให้ชี้ไปที่การติดตั้งอื่นแทนที่จะเป็นค่าเริ่มต้น ขณะนี้ชี้ไปที่ / usr / bin / pip แต่ฉันต้องการให้ชี้ไปที่ / usr / local / bin / pip ฉันเชื่อว่าฉันมีเส้นทางที่ถูกต้องและทุกอย่างก็ชี้ไปยังตำแหน่งที่ถูกต้อง วิธีที่ดีที่สุดในการแก้ไขปัญหานี้คืออะไร # echo $PATH /usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin # which python /usr/local/bin/python # which easy_install /usr/local/bin/easy_install # which pip /usr/bin/pip
12 python  path  pip 

2
จะเพิ่มพา ธ โฮมไดเร็กตอรี่ที่ Unix ถูกค้นพบได้อย่างไร?
ฉันติดตั้งnode.jsในตำแหน่งที่กำหนดเองและเพิ่มตำแหน่งลง$PATHใน.profileไฟล์ $ node --version v0.6.2 $ which node $ echo $PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:~/Unix/homebrew/bin $ cat ~/.profile export PATH="$PATH:~/Unix/homebrew/bin" Node.js ทำงานได้ดี ปัญหามันไม่ได้อยู่ในรายการตามwhichคำสั่ง npmตอนนี้ฉันไม่สามารถติดตั้งได้ เพราะติดตั้งไม่สามารถหาสถานที่ตั้งของnpm node.jsฉันจะสร้างnodeไบนารีที่ค้นพบได้whichอย่างไร
12 path  profile  home  which 


2
PATH บน Mac OS คืออะไร
อะไรคือสิ่งที่PATHอยู่ใน Mac OS? ฉันได้ใช้มันเพื่อติดตั้งเครื่องมือบรรทัดคำสั่งระดับโลก แต่เอกสารเดียวที่ฉันได้พบคือบทเรียนสำหรับการทำเช่นนั้นโดยไม่มีคำอธิบายที่แท้จริงของสิ่งที่เกิดขึ้นภายใต้ประทุน ฉันยังไม่ได้พบหน้าเว็บที่เกี่ยวข้องในวิกิพีเดีย ดังนั้นอะไรคือจุดประสงค์PATHและความแตกต่างระหว่าง/etc/pathsและ~/.bash_profile** คืออะไร ตัวอย่างเช่นในpathsไฟล์ของฉันฉันเห็นสิ่งนี้: /usr/bin /bin /usr/sbin /sbin /usr/local/bin แต่ในของ~/.bash_profileฉันฉันเห็นสิ่งนี้: # Setting PATH for Python 2.7 # The orginal version is saved in .bash_profile.pysave PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH นี่เป็นเพียงส่วนเพิ่มเติมเฉพาะของผู้ใช้ในpathsไฟล์หรือไม่ มีอะไรอยู่ในpathsนั้น/usr/binบ้างไหม?
12 osx  path  binary 

1
วิธีรันโปรแกรมของฉันเองโดยไม่ระบุพา ธ
สมมติว่าฉันได้รวบรวมบางสิ่งบางอย่างและฉันเรียกใช้เช่น $ /path/to/my/executable/mycmd Hello World ฉันต้องทำอะไรเพื่อเรียกใช้เช่นนี้ $ mycmd Hello World จากทุกที่ในคอมพิวเตอร์ของฉัน

3
$ HOME / bin dir ไม่ได้อยู่บน $ PATH
ในฉัน~/.profileฉันมีบล็อกสุดท้ายซึ่งควรโหลดส่วนบุคคลของฉันbin/ directoryเช่นนี้: # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi แต่ดูเหมือนจะไม่โหลด: echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games ทำไมสิ่งนี้ถึงไม่ทำงาน (เปลือกของฉันคือทุบตี) แก้ไขสำหรับ Tigger echo $0 => bash echo $HOME => /home/student whoami => student less /etc/*-release => PRETTY_NAME="Debian GNU/Linux 9 (stretch)" NAME="Debian …

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