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

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

3
เพิ่มเส้นทางใน $ PATH ทั่วโลกสำหรับผู้ใช้ทุกคน
เรามีวิธีเพิ่มเส้นทางทั่วโลกอยู่แล้วเพื่อให้ผู้ใช้แต่ละคนได้รับใน $ PATH ฉันต้องการเพิ่มเส้นทางของ ANT เพื่อให้ผู้ใช้แต่ละคนไม่จำเป็นต้องเพิ่มลงในตัวแปร $ PATH ของเขา
21 path  aix 

4
เส้นทาง shebangs อิสระ
ฉันมีสคริปต์ที่ฉันต้องการให้สามารถทำงานในสองเครื่อง เครื่องทั้งสองนี้รับสำเนาของสคริปต์จากที่เก็บ git เดียวกัน สคริปต์ต้องทำงานด้วยล่ามที่ถูกต้อง (เช่นzsh) น่าเสียดายที่ทั้งคู่ envและzshอาศัยอยู่ในสถานที่ต่าง ๆ ในเครื่องท้องถิ่นและระยะไกล: เครื่องรีโมต $ which env /bin/env $ which zsh /some/long/path/to/the/right/zsh เครื่องท้องถิ่น $ which env /usr/bin/env $which zsh /usr/local/bin/zsh ฉันสามารถตั้งค่า shebang เพื่อให้การทำงานสคริปต์ที่เป็น/path/to/script.shมักจะใช้Zshในที่มีอยู่PATH?
20 shell  zsh  cron  path 

4
`ซึ่ง 'แต่ทั้งหมด
ฉันคิดว่าคนส่วนใหญ่คุ้นเคยกับwhichคำสั่งและฉันใช้มันบ่อยๆ ฉันเพียงแค่วิ่งเข้าไปในสถานการณ์ที่ฉันอยากรู้ไม่ได้เป็นเพียงที่คำสั่งเป็นครั้งแรกในเส้นทางของฉัน แต่หลายวิธีและสถานที่ที่ทุกคำสั่งในเส้นทางของฉันทั้งหมดที่มี ฉันลองใช้หน้าคน (พิมพ์man whichทำให้ฉันหัวเราะ) แต่ไม่เห็นอะไรเลย
19 path 

1
ทำไม root ไม่มี / usr / local ใน path?
ฉันสังเกตเห็นว่าเส้นทางเริ่มต้นสำหรับรูทใน vm และเซิร์ฟเวอร์ของฉันไม่รวม / usr / local / bin sudo -s echo $PATH /sbin:/bin:/usr/sbin:/usr/bin ในขณะที่ผู้ใช้ปกติบนเซิร์ฟเวอร์มี / usr / local / bin /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/sowen/bin ทำไมรูทไม่ต้องการ / usr / local ในพา ธ เส้นทางเริ่มต้นสำหรับผู้ใช้กำหนดอยู่ที่ไหน
19 root  path 

2
สัญลักษณ์ @ แสดงถึงอะไรในจุดเริ่มต้นของเส้นทางซ็อกเก็ตโดเมน unix ใน Linux
เมื่อฉันเรียกnetstat --protocol unixหรือlsof -Uผมเห็นว่าบางเส้นทางซ็อกเก็ตยูนิกซ์จะใช้ได้กับสัญลักษณ์ @ ตัวอย่างเช่น@ / tmp / dbus-qj8V39Yrpa จากนั้นเมื่อฉันเรียกใช้ls -l /tmpฉันไม่เห็นไฟล์ชื่อdbus-qj8V39Yrpa ที่นั่น คำถามคือสิ่งที่สัญลักษณ์ @ ที่เติมไว้แสดงว่าอะไร และคำถามที่เกี่ยวข้องที่สองคือ - ฉันจะหาไฟล์ซ็อกเก็ต unix ได้ที่ไหน ( @ / tmp / dbus-qj8V39Yrpa ) บนระบบไฟล์
17 linux  path  socket 

3
คำสั่ง `ซึ่ง` อาจจะผิด (บางครั้ง)?
ฉันได้รวบรวมเวอร์ชั่น emacs ล่าสุดจากซอร์สโค้ด (v24.2) เพราะเวอร์ชันที่ติดตั้งในเครื่องของฉันนั้นค่อนข้างเก่าสำหรับฉัน (v21.3) ฉันทำตามปกติ: $configure --prefix=$HOME make make install ตอนนี้ฉันกำลังทดสอบ emacs และรู้ว่ามันยังคงเปิดตัวรุ่นก่อนหน้า ... ในขณะที่$HOME/binเส้นทางของฉันควรจะแทนที่ระบบหนึ่ง (เนื่องจากมีการเติมไว้ที่ $ PATH ใน.bashrcไฟล์ของฉัน) ความคิดแรกของฉันคือการเห็นwhichผลลัพธ์ของคำสั่ง และน่าประหลาดใจมันทำให้เส้นทางไปสู่ ​​emacs ใหม่ ฉันไม่เข้าใจความแตกต่างของที่นี่ ในเซสชันเดียวกันนี่คือผลลัพธ์ที่ต่างกัน: $ emacs --version GNU Emacs 21.3.1 $ `which emacs` --version GNU Emacs 24.2.1 ฉันไม่มีนามแฝงที่เกี่ยวข้องกับ emacs เลย $ alias | grep emacs $ ความคิดใดที่เกิดขึ้นได้โปรด
17 bash  emacs  path  which 

4
วิธีการตั้งค่าตัวแปร crontab PATH
ฉันมีปัญหาในการเรียกใช้สคริปต์จาก crontab หลังจากการวิจัยบางอย่างฉันเข้าใจว่าปัญหาเกิดขึ้นเนื่องจากพารามิเตอร์ PATH ไม่รวม / sbin ฉันดูว่ามันรวมอยู่ใน / etc / crontab: PATH=/sbin:/bin:/usr/sbin:/usr/bin เป็นการทดสอบ - งาน cron ง่าย ๆ ในการพิมพ์ตัวแปร PATH: * * * * * echo $PATH &> /root/TMP.log ผลลัพธ์คือ: cat /root/TMP.log /usr/bin:/bin ฉันไม่เข้าใจพฤติกรรมนี้ ... ฉันจะตั้งค่าตัวแปร PATH ได้อย่างไร? หรือดีกว่า - วิธีเพิ่มเส้นทางไปยังมันได้อย่างไร
17 centos  cron  path 

4
มุมมองที่สมบูรณ์ของตำแหน่งที่ตัวแปร PATH ถูกตั้งค่าเป็น bash
ฉันได้อ่านในสองสถานที่ที่PATHมีการตั้งค่า/etc/profileหรือ.profileไฟล์ที่อยู่ในบ้าน dir สถานที่เหล่านี้เป็นสถานที่เดียวที่ตั้งค่าเส้นทางหรือไม่ ฉันต้องการความเข้าใจที่ดีขึ้น ในไฟล์เช่นแสดงความคิดเห็นต่อไปนี้กล่าว/etc/profile "system-wide .profile file for the Bourne shell"นั่นหมายความว่าไฟล์โปรไฟล์เป็นไฟล์กำหนดค่าหลักสำหรับการทุบตี? ในไฟล์นั้นฉันไม่เห็นPATHการตั้งค่า var ทั้งหมด ใน.profileไฟล์ในโฮมไดเร็กทอรีมีบรรทัดนี้: PATH="$HOME/bin:$PATH" นั่นคือการรีเซ็ตPATHโดยรูปลักษณ์เพราะมันเชื่อมต่อ$PATHสตริงที่ตั้งค่าไว้เรียบร้อยแล้ว$HOME/bin:ใช่ไหม แต่ถ้าetc/profileและ~/.profileเป็นเฉพาะไฟล์การตั้งค่าPATHที่จะ$PATHมาจากในบรรทัดของรหัสที่หากยังไม่ได้กำหนดไว้ใน/etc/profile? ใครบางคนที่มีประสบการณ์สามารถโปรดอธิบายรายละเอียดเกี่ยวกับPATHตัวแปรได้อย่างละเอียดหรือไม่? ขอบคุณ!

1
เปอร์เซ็นต์ในตัวแปรสภาพแวดล้อม $ PATH
$ PATH ของฉันมีลักษณะดังนี้: /home/torbjorr/deployed/vector/x86_64-GNU%2fLinux:/home/torbjorr/deployed/typewriter/x86_64-GNU%2fLinux:/home/torbjorr/deployed/mustudio/x86_64-GNU%2fLinux:/home/torbjorr/deployed/mathext/x86_64-GNU%2fLinux:/home/torbjorr/deployed/doxymax/x86_64-GNU%2fLinux:/home/torbjorr/deployed/c2tex/x86_64-GNU%2fLinux:/home/torbjorr/deployed/x86_64-GNU%2fLinux/wand:/home/torbjorr/deployed/x86_64-GNU%2fLinux/spellesc:/home/torbjorr/deployed/x86_64-GNU%2fLinux/projinit:/home/torbjorr/deployed/x86_64-GNU%2fLinux/herbs:/home/torbjorr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games ในทุบตีฉันสามารถไม่มีปัญหาเรียกคันตั้งอยู่ใน /home/torbjorr/deployed/x86_64-GNU%2fLinux/wand ชอบ $ wand (i) Mål från "main.cpp" har registrerats (i) Skapar katalog "__wand_targets_dbg" (i) Kör g++ "main.cpp" -fpic -L"/home/torbjorr/deployed" -g -Wall -std=c++11 -I"/home/torbjorr/deployed" -o "__wand_targets_dbg/cb-template อย่างไรก็ตามในโหมดความเข้ากันได้ของเชลล์ bourne ไม่พบไม้กายสิทธิ์: $ wand sh: 2: wand: not found ดูเหมือนว่าปัญหาคือเครื่องหมาย% ในพา ธ เหล่านี้ เครื่องหมายนี้ได้รับการเพิ่มโดยการเข้ารหัส URL เพื่อให้สามารถใช้ชื่อ "GNU / …
16 shell  path  dash  ash 

3
ฉันจะตั้งค่า PATH หรือตัวแปรสภาพแวดล้อมอื่น ๆ เพื่อให้แอป X สามารถเข้าถึงได้อย่างไร
ฉันจะตั้งค่าตัวแปร env เพื่อให้ KDE จำแนกได้อย่างไร คุณจะตั้งค่าพา ธ ในระบบที่ไม่ใช่เชลล์ได้อย่างไร (KDE) ต่างจากคำถามสองข้อข้างต้นฉันต้องการทราบวิธีการทำสิ่งนี้กับ GNOME หรือดีกว่ายังมีวิธีการที่เป็นอิสระจากการจัดการหน้าต่าง สำหรับเปลือก / ~/.bashrcขั้วผมมักจะแก้ไข ฉันจะวางคำสั่งส่งออกได้ที่ใดเพื่อให้ตัวแปรสภาพแวดล้อมพร้อมใช้งานสำหรับแอปพลิเคชัน X ทั้งหมดไม่ว่าจะใช้ตัวจัดการหน้าต่างหรือไม่

4
การเพิ่มเส้นทางไปยัง PATH โดยใช้ไวยากรณ์หลายบรรทัด
เท่าที่ฉันเข้าใจวิธีปกติในการเพิ่มพา ธ ไปยังPATHตัวแปรสภาพแวดล้อมคือการเชื่อมโยงพา ธ ที่คั่นด้วย:อักขระ ตัวอย่างเช่นถ้าผมต้องการที่จะเพิ่มอีกสามเส้นทางไป/my/path/1, /my/path/2และ/my/path/3ผมจะต้องทำดังนี้ PATH=$PATH:/my/path/1:/my/path/2:/my/path/3 ซึ่งอ่านไม่ง่าย มีวิธีการกำหนดหรือเพิ่มเส้นทางไปยังPATHตัวแปรโดยใช้ไวยากรณ์หลายบรรทัดหรือไม่? อาจจะใช้อาร์เรย์? ฉันกำลังมองหาสิ่งนี้: PATH = $PATH /my/path/1 /my/path/2 /my/path/3 ในกรณีที่มีวิธีแก้ปัญหาที่น่าสนใจที่เฉพาะเจาะจงของเชลล์ฉันกำลังมองหาวิธีแก้ปัญหาใน zsh

4
bash: adduser: ไม่พบคำสั่งบน centOS
ฉันติดตั้ง CentOS 5.5 บน VMWare 8 ของฉันเมื่อเร็ว ๆ นี้และฉันพยายามเพิ่มผู้ใช้ใหม่ในระบบ ฉันไม่สามารถเพิ่มผู้ใช้ยกเว้นว่าฉันใช้su -ตัวเลือก ฉันเชื่อว่ามันต้องทำอะไรบางอย่างกับเส้นทางที่ไม่ได้ตั้งอย่างถูกต้อง ฉันอัปเดตเส้นทางแล้วและนี่คือสิ่งที่ดูเหมือน /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/uone/bin:/sbin ฉันเชื่อว่าคำสั่งอยู่ใน / sbin dir ซึ่งเป็นส่วนหนึ่งของเส้นทางแล้ว มีใครแนะนำฉันได้บ้างที่ฉันอาจหายไป?
16 shell  path 

1
ทำไมไม่พบ rsync
rsync -avP /home/user/.profile hpux3:/home/user/.profile bash: rsync: command not found ถ้าฉันไม่ได้ ssh กับเครื่อง hpux3 rsync version 3.1.1 protocol version 31 Copyright (C) 1996-2014 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ output truncated ฉันได้ตั้งPATHในและ$HOME/.profile $HOME/.bashrcฉันควรตั้งไว้ใน/etc/profileไฟล์หรือไม่
16 rsync  path 

3
การเรียกใช้งาน executable ใน PATH ด้วยชื่อเดียวกันกับฟังก์ชั่นที่มีอยู่
บางครั้งฉันกำหนดฟังก์ชั่นที่ให้เงาของไฟล์ที่ปฏิบัติการได้และปรับแต่งอาร์กิวเมนต์หรือเอาต์พุตของมัน ดังนั้นฟังก์ชั่นจึงมีชื่อเดียวกับไฟล์ที่เรียกใช้งานได้และฉันต้องการวิธีเรียกใช้ไฟล์ที่เรียกใช้จากฟังก์ชันโดยไม่ต้องเรียกใช้ฟังก์ชันซ้ำ ตัวอย่างเช่นเมื่อต้องการเรียกใช้ผลลัพธ์ของการfossil diffผ่านcolordiffและless -Rฉันใช้: function fossil () { local EX=$(which fossil) if [ -z "$EX" ] ; then echo "Unable to find 'fossil' executable." >&2 return 1 fi if [ -t 1 ] && [ "$1" == "diff" ] ; then "$EX" "$@" | colordiff | less -R return …
16 bash  path  function 

2
ภายใต้สถานการณ์ใดจะปฏิบัติการที่พบครั้งแรกในเส้นทางไม่ได้ใช้
ฉันมีพฤติกรรมที่แปลกประหลาดกับ zsh (5.4.2_1 ติดตั้งกับ homebrew) บน osx ที่ไม่ได้ใช้งานครั้งแรกของปฏิบัติการในเส้นทาง นี่คือสถานการณ์: echo $PATH ผลตอบแทน: /usr/local/Cellar/zplug/HEAD-9fdb388/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ชงเป็นทั้ง /usr/local/Cellar/zplug/HEAD-9fdb388/bin และ usr/local/bin/brew นี่คือการยืนยันโดยการทำงานที่ -a ชงซึ่งผลตอบแทน: /usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew /usr/local/bin/brew แต่เมื่อฉันเรียกใช้ที่ชงมันกลับมา: /usr/local/bin/brew และการชงไม่ทำงาน/usr/local/bin/brewมากกว่า/usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew สิ่งนี้จะเกิดขึ้นได้อย่างไรเมื่อชงก่อนหน้านี้ในเส้นทาง? ช่วยชื่นชม
15 zsh  path 

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