คือ$PATHอะไร
ฉันจะมีคำสั่ง / โปรแกรมที่พร้อมใช้งานสำหรับฉันเท่านั้นได้อย่างไร
ฉันเคยเห็นเส้นทางนี้ที่~/binกล่าวถึงก่อนหน้านี้ แต่มันใช้เพื่ออะไรและฉันจะใช้มันได้อย่างไร
คือ$PATHอะไร
ฉันจะมีคำสั่ง / โปรแกรมที่พร้อมใช้งานสำหรับฉันเท่านั้นได้อย่างไร
ฉันเคยเห็นเส้นทางนี้ที่~/binกล่าวถึงก่อนหน้านี้ แต่มันใช้เพื่ออะไรและฉันจะใช้มันได้อย่างไร
คำตอบ:
$ PATH เป็นตัวแปรสภาพแวดล้อมที่ใช้ในการค้นหาคำสั่ง ~ เป็นไดเรกทอรีบ้านของคุณดังนั้น ~ / bin จะเป็น / home / user / bin; มันเป็นไดเรกทอรีปกติ
เมื่อคุณรัน "ls" ในเชลล์ตัวอย่างเช่นคุณรันโปรแกรม / bin / ls ตำแหน่งที่แน่นอนอาจแตกต่างกันไปขึ้นอยู่กับการกำหนดค่าระบบของคุณ สิ่งนี้เกิดขึ้นเพราะ / bin อยู่ใน $ PATH ของคุณ
หากต้องการดูพา ธ และค้นหาตำแหน่งที่คำสั่งใดตั้งอยู่:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
ในการมีไดเรกทอรีถังส่วนตัวของคุณเองคุณจะต้องเพิ่มไปยังเส้นทาง ทำได้โดยการแก้ไข ~ / .profile (ไฟล์ที่ซ่อน) เพื่อรวมบรรทัดด้านล่าง หากมีการแสดงความคิดเห็นบรรทัดคุณจะต้องยกเลิกการแสดงความคิดเห็นพวกเขาเท่านั้น หากพวกเขามีอยู่แล้วคุณพร้อมแล้ว!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
ตอนนี้คุณต้องสร้างไดเรกทอรี ~ / bin ของคุณและเนื่องจาก. profile ทำงานในการเข้าสู่ระบบและเพิ่มเพียง ~ / bin หากมีอยู่ในเวลานั้นคุณต้องเข้าสู่ระบบอีกครั้งเพื่อดู PATH ที่ปรับปรุง
ลองทดสอบดูสิ:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
typeเพื่อดูว่าเชลล์คำสั่งจริงแก้ไขได้อย่างไร เช่น: which echoและtype echoจะรายงานสิ่งต่าง ๆwhichส่งคืน '/ bin / echo' แต่ 'type' ส่งคืนว่าเป็นเชลล์ในตัวซึ่งเชลล์จะชอบมากกว่าไฟล์ใน '/ bin'
whichถูกแทนที่โดยดีกว่าtypeหรือcommandในเชลล์แบบโต้ตอบและมันไม่มีประโยชน์อย่างสมบูรณ์ในสคริปต์
$HOMEตัวแปรใน$PATHบางเหตุผลไม่ทำงานนั่นคือต้องใช้~เครื่องหมายแทน
เกี่ยวกับ~/binและคำสั่ง / โปรแกรมที่มีให้เฉพาะกับผู้ใช้ของคุณ
Ubuntu รุ่นล่าสุดรวมถึง~/binไดเรกทอรีในของคุณ$PATHแต่ถ้า~/binมีอยู่ในไดเรกทอรี
หากไม่มีอยู่:
ตรวจสอบให้แน่ใจว่าคุณ~/.profileมีส่วนประกอบต่อไปนี้ (ค่าเริ่มต้น~/.profileแล้ว):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
สร้าง~/binไดเรกทอรี:
mkdir -p ~/bin
รีบูตคอมพิวเตอร์ของคุณหรือบังคับให้ bash อ่านใหม่~/.profile:
exec -l bash
exec -l bashเคล็ดลับ"รีบูตหรือ" อะไร-lธงทำอย่างไร man execฉันไม่ได้หาคำอธิบายใน
exec -lจะดำเนินการทุบตีเป็นเปลือกเข้าสู่ระบบ [ wiki.bash-hackers.org/commands/builtin/exec] ในระยะสั้นจะบังคับทุบตีอีกครั้งอ่านและ/etc/profile ~/.profileเพิ่งรันexec bashจะอ่าน~/.bashrcใหม่เท่านั้น