ฉันจะเพิ่มไดเรกทอรี$PATHใน Ubuntu และทำการเปลี่ยนแปลงแบบถาวรได้อย่างไร
ฉันจะเพิ่มไดเรกทอรี$PATHใน Ubuntu และทำการเปลี่ยนแปลงแบบถาวรได้อย่างไร
คำตอบ:
พา ธ ที่ตั้งค่าใน.bash_profileจะถูกตั้งค่าในเชลล์ล็อกอิน bash ( bash -l) เท่านั้น หากคุณใส่เส้นทางของคุณ.profileมันจะพร้อมใช้งานในเซสชันเดสก์ท็อปทั้งหมดของคุณ นั่นหมายความว่าแม้ความหนาแน่นจะใช้
ตัวอย่างเช่น~/.profile:
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
Btw คุณสามารถตรวจสอบตัวแปร PATH ของกระบวนการโดยดูที่สภาพแวดล้อมใน/proc/[pid]/environ(แทนที่ [pid] ด้วยหมายเลขจากps axf) เช่นใช้grep -z "^PATH" /proc/[pid]/environ
bashในฐานะที่เป็นเชลล์เข้าสู่ระบบจะไม่แยกวิเคราะห์.profileถ้ามี.bash_profileหรือ.bash_loginมีอยู่ จากman bash:
มันจะมองหา ~ / .bash_profile, ~ / .bash_login และ ~ / .profile ตามลำดับและอ่านและเรียกใช้คำสั่งจากคำสั่งแรกที่มีอยู่และอ่านได้
ดูคำตอบด้านล่างสำหรับข้อมูลเกี่ยวกับ.pam_environmentหรือ.bashrcเชลล์ที่ไม่ใช่การเข้าสู่ระบบแบบโต้ตอบหรือตั้งค่าทั่วโลกสำหรับผู้ใช้ทั้งหมดโดยใส่สคริปต์ลงใน/etc/profile.d/หรือใช้/etc/X11/Xsession.d/เพื่อส่งผลกระทบต่อเซสชันผู้จัดการการแสดงผล
PATH="$HOME/bin:$PATH"ดังนั้นฉันจะเพิ่มมันเข้าไปหรือไม่
แก้ไข.bashrcในโฮมไดเร็กทอรีของคุณและเพิ่มบรรทัดต่อไปนี้:
export PATH="/path/to/dir:$PATH"
คุณจะต้องแหล่งที่มาของคุณ.bashrcหรือออกจากระบบ / เข้าสู่ระบบ (หรือรีสตาร์ท terminal) เพื่อให้การเปลี่ยนแปลงมีผล หากต้องการแหล่งที่มาของคุณ.bashrcเพียงพิมพ์
$ source ~/.bashrc
.bashrc" ได้อย่างไร คุณจะ "รีสตาร์ทเครื่อง" ได้อย่างไร?
.bashrcไม่ถูกต้องสำหรับการตั้งค่าตัวแปรสภาพแวดล้อม พวกเขาควรจะไปในหรือ.profile .pam_environmentดูmywiki.wooledge.org/DotFiles
. .bashrcไม่.bashrc:) หรือsource .bashrcสำหรับเรื่องนั้น
สถานที่แนะนำเพื่อกำหนดตัวแปรสภาพแวดล้อมทั้งระบบแบบถาวรที่ใช้กับผู้ใช้ทั้งหมดอยู่ใน:
/etc/environment
(ซึ่งเป็นที่ที่PATHมีการกำหนดค่าเริ่มต้น)
สิ่งนี้จะทำงานในเดสก์ท็อปหรือคอนโซล, gnome-terminal หรือ TTY, ฝนหรือเงา;)
หากต้องการแก้ไขให้กดAlt+ F2และพิมพ์:
gksudo gedit /etc/environment
(หรือเปิดไฟล์โดยใช้sudoในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ)
. /etc/environmentที่จะทำให้เกิดการเปลี่ยนแปลงที่เรียกใช้ เนื่องจากไฟล์นี้เป็นเพียงสคริปต์อย่างง่ายมันจะรันและกำหนดพา ธ ใหม่ให้กับPATHตัวแปรสภาพแวดล้อม หากต้องการตรวจสอบเรียกใช้ env และดูPATHค่าในรายการ
ที่เกี่ยวข้อง:
source /etc/environmentเพื่อโหลดการเปลี่ยนแปลงอีกครั้ง
ฉันคิดว่าวิธีบัญญัติใน Ubuntu คือ:
สร้างไฟล์ใหม่ภายใต้ /etc/profile.d/
sudo vi /etc/profile.d/SCRIPT_NAME.sh
เพิ่มที่นั่น:
export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
และให้สิทธิ์ดำเนินการ
sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
สำหรับมือใหม่ที่สมบูรณ์ (เช่นฉัน) ที่คุ้นเคยกับ GUI:
$HOMEโฟลเดอร์ของคุณ.profileและคลิกที่เปิดด้วยโปรแกรมแก้ไขข้อความPATH="$PATH:/my/path/foo"เลื่อนไปด้านล่างและเพิ่ม.profile)$PATH:บิตซึ่งรวมถึงคำจำกัดความของเส้นทางที่มีอยู่แล้ว
สำหรับตัวแปรสภาพแวดล้อมแบบถาวรมีให้สำหรับผู้ใช้บางรายเท่านั้น ฉันขอแนะนำเอกสารทางการของ Ubuntu
https://help.ubuntu.com/community/EnvironmentVariables
อ้างถึงเอกสารข้างต้นฉันได้ตั้งค่าเครื่องมือเส้นทาง Android SDKของฉันโดย:
~/.pam_environmentไฟล์ในโฮมไดเร็กตอรี่PATH DEFAULT=${PATH}:~/android-sdk-linux/toolsเนื้อหาที่เป็นใส่บรรทัดนั้นใน~/.bashrcไฟล์ของคุณ
มันจะได้รับที่มาเมื่อคุณเปิดเทอร์มินัล
แก้ไข : ตามความคิดเห็นด้านล่างสำหรับการตั้งค่าทั่วไปที่จะใช้กับเชลล์ทั้งหมด (รวมถึงเมื่อคุณกดAlt- เป็นF2Unity) ให้เพิ่มบรรทัดลงใน~/.profileไฟล์ของคุณ อาจไม่ควรทำทั้งสองอย่างเนื่องจากพา ธ จะถูกเพิ่มเข้ากับPATHสภาพแวดล้อมของคุณสองครั้งหากคุณเปิดเทอร์มินัล
$HOME/.profileการตั้งค่าส่วนบุคคลหรือ/etc/profileสำหรับผู้ใช้ทั้งหมด แต่ถ้ามันจำเป็นสำหรับการทุบตีเท่านั้นฉันคิดว่าจะใช้งานได้
~/.bashrcจะมีเฉพาะในเทอร์มินัลที่คุณเปิด เช่นถ้าคุณกด Alt + F2 และลองเรียกใช้คำสั่งจาก dir นั้นมันจะไม่พบมัน หากคุณตั้งค่าไว้ใน~/.profileหรือ~/.pam_environmentเซสชั่นคำพังเพย (หรือสิ่งที่ DE คุณใช้) จะสืบทอดมา การต่อท้าย PATH ในนั้น~/.bashrcยังมีข้อเสียเปรียบว่าถ้าคุณเปิด / exec bash แบบโต้ตอบจากเปลือก bash แบบโต้ตอบอื่นมันจะถูกผนวกหลายครั้ง
~/.profileถูกต้องสำหรับเส้นทางส่วนบุคคลแม้ว่า; นั่นคือสิ่งที่ Ubuntu เพิ่ม~/binไดเรกทอรี และฉันขอสารภาพว่าฉันพูดเกินจริงไปเล็กน้อยในหลายวิธี - เพียงเล็กน้อย
~/.profileในกรณีนี้ด้วย
การตั้งค่าระบบกว้างท้ายบรรทัดที่ส่วนท้ายของexport PATH=/path/you're/adding:$PATH/etc/profile
~/.bash_profileหากต้องการเพิ่มไดเรกทอรีสำหรับเฉพาะผู้ใช้เข้าสู่ระบบในท้ายบรรทัดเดียวกัน
การเพิ่มลงใน. bashrc จะใช้งานได้ แต่ฉันคิดว่าวิธีดั้งเดิมในการตั้งค่าตัวแปรพา ธ ของคุณอยู่ใน. bash_profile โดยเพิ่มบรรทัดต่อไปนี้
PATH=$PATH:/my/path/foo
export PATH
ตามหัวข้อนี้ปรากฏว่าพฤติกรรมของ Ubuntu แตกต่างจาก RedHat และโคลนเล็กน้อย
.bashrcติดมัน.bashrcแทน เทอร์มินัล GUI ใน Ubuntu ไม่ใช่การเข้าสู่ระบบเชลล์ดังนั้น.bash_profileจะไม่ถูกเรียกใช้
.bash_profileไม่มีคุณไม่จำเป็นต้อง หาก bash ไม่พบ a .bash_profile(เมื่อคุณเข้าสู่ระบบแบบโต้ตอบ) ระบบจะค้นหา.profileและใช้สิ่งนั้นแทน โดยค่าเริ่มต้นคุณจะมี.profileและ.bashrcใน Ubuntu และ.profileเป็นสถานที่ที่ถูกต้องในการตั้งค่าตัวแปรสภาพแวดล้อมหากเราไม่สนใจ pam_env
sudo vi /etc/profile.d/SCRIPT_NAME.sh
เพิ่มที่นั่น
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
sudo nano /etc/profile.d/SCRIPT_NAME.shง่ายสำหรับผู้เริ่มต้น
gksu gedit /etc/profile.d/SCRIPT_NAME.shจะง่ายยิ่งขึ้น
เมื่อใดก็ตามที่ฉัน "ติดตั้ง" โฟลเดอร์ของสคริปต์ BASH ฉันทำตามรูปแบบของการทดสอบสำหรับ$HOME/binโฟลเดอร์ที่อยู่ในไฟล์. profile ส่วนใหญ่ใน Ubuntu รุ่นล่าสุด ฉันตั้งค่าการทดสอบที่ดูเหมือนว่า
if [ -d "/usr/scripts" ]; then
PATH="/usr/scripts:$PATH"
fi
มันใช้งานได้ประมาณ 100% ของเวลาและปล่อยให้ฉันเป็นอิสระในการแก้ไขข้อความใน GUI ด้วยการ "แทนที่ทั้งหมด" อย่างรวดเร็วฉันควรจะตัดสินใจย้ายที่/scriptsใดที่หนึ่งใกล้กับ$HOMEโฟลเดอร์ของฉัน ฉันไม่ได้ติดตั้งอูบุนตู 6 ตัว แต่มี "พรุ่งนี้เสมอ" S
BZT
วิธีที่แนะนำในการแก้ไขของคุณPATHคือจาก/etc/environmentไฟล์
ตัวอย่างผลลัพธ์ของ/etc/environment:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
ตัวอย่างเช่นหากต้องการเพิ่มเส้นทางใหม่ของ /home/username/mydir
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"
จากนั้นรีบูทพีซีของคุณ
ตัวแปรสภาพแวดล้อมทั้งระบบ
ไฟล์ที่เหมาะสมสำหรับการตั้งค่าตัวแปรสภาพแวดล้อมที่ส่งผลกระทบต่อระบบโดยรวม (แทนที่จะเป็นผู้ใช้เฉพาะ) คือ / etc / environment อีกทางเลือกหนึ่งคือการสร้างไฟล์สำหรับวัตถุประสงค์ในไดเรกทอรี /etc/profile.d
/ etc / สภาพแวดล้อม
ไฟล์นี้มีความหมายโดยเฉพาะสำหรับการตั้งค่าตัวแปรสภาพแวดล้อมทั้งระบบ ไม่ใช่ไฟล์สคริปต์ แต่ประกอบด้วยนิพจน์การมอบหมายหนึ่งรายการต่อบรรทัด
หมายเหตุ:การขยายตัวแปรไม่ทำงานใน / etc / environment
ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่: EnvironmentVariables
เปิดเทอร์มินัลของคุณพิมพ์gedit .profileและใส่ต่อไปนี้:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
#the following line add Bin where you dont have a Bin folder on your $HOME
PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"
ปิดและเปิด terminal มันควรจะทำงาน
ใส่ลงใน~/.bashrcหรือของคุณคุณใช้ rc (หรือไปก่อนหน้า~/.profile) และ~/.xsessionrcดังนั้นมันจะทำงานใน X (เปลือกนอก)
แม้ว่าสคริปต์ของระบบจะไม่ใช้สิ่งนี้ แต่อย่างใดในกรณีที่ต้องการเพิ่มพา ธ (เช่น$HOME/bin) ไปยังตัวแปรสภาพแวดล้อม PATH คุณควรใช้
PATH="${PATH:+${PATH}:}$HOME/bin"
สำหรับการต่อท้าย (แทนPATH="$PATH:$HOME/bin") และ
PATH="$HOME/bin${PATH:+:${PATH}}"
สำหรับการเตรียมการ (แทนPATH="$HOME/bin:$PATH")
วิธีนี้จะหลีกเลี่ยงลำไส้ใหญ่ที่นำหน้า / ต่อท้ายเมื่อ$PATHไม่ว่างในตอนแรกซึ่งอาจมีผลกระทบที่ไม่พึงประสงค์
สำหรับ Ubuntu ให้แก้ไข~/.bashrcและเพิ่มบรรทัดต่อไปนี้
. ~/.bash_profile
จากนั้นแก้ไข. bash_profile ตามที่คุณต้องการ .....
.bash_profileตามที่คุณต้องการ" ว่าสิ่งที่ฉันต้องทำไป.bash_profile?
.profileหรือควรจะมา.bash_profile .bashrcไม่ใช่วิธีอื่น ๆ