ฉันไม่พบ. bash_profile ใน ubuntu


67

ฉันไม่พบ.bash_profileใน Ubuntu 14.04 ใน/home/userไดเรกทอรีของฉัน ฉันใช้ls -aคำสั่งเพื่อดู.bash_profileแต่ไม่มีไฟล์ดังกล่าว


1
คุณควรใช้~/.profileแทน
muru

2
สำเนาที่เป็นไปได้ของฉันไม่พบ. bash_profile
Alaa Ali

1
เป็นเรื่องปกติที่ไฟล์กำหนดค่าบางตัว (หรือแม้แต่ไดเรกทอรี) หายไป ในกรณีดังกล่าวซอฟต์แวร์ที่ควรอ่านจะใช้การกำหนดค่าเริ่มต้นและ / หรืออ่านแหล่งข้อมูลอื่นเพื่อดึงข้อมูลการกำหนดค่า หากคุณต้องการแก้ไขไฟล์กำหนดค่าที่ไม่มีอยู่ให้สร้างก่อน
Bakuriu

คำตอบ:


84

~/.profileใช้อูบุนตู

คุณสามารถสร้างของคุณ.bash_profileใน Ubuntu แต่.profileจะไม่ถูกอ่าน

ถ้าเราอ่านเนื้อหา. profile:

cat ~/.profile

เอาท์พุต

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

ดังนั้นใช้~/.profileแทน~/.bash_profile


. โปรไฟล์ไม่ทำงานสำหรับฉัน ฉันต้องแก้ไข. bashrc vim ~/.bashrcแล้ว. ~/.bashrc
Nahid

การใช้. bash_profile ไม่ทำงานบน Ubuntu มันใช้ Dash เป็นเชลล์เข้าสู่ระบบ GUI ไม่ใช่ Bash ดังนั้น bash_profile จึงไม่อ่าน
Jonathan Hartley

หากคุณแก้ไข. profile ของคุณคุณต้องออกจากระบบและกลับเข้ามาอีกครั้งเพื่อดูการเปลี่ยนแปลง
Jonathan Hartley

8

เมื่อเรียกใช้งานเชลล์ล็อกอิน bash จะค้นหาไฟล์กำหนดค่าตามลำดับนี้:

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

หลังจากค้นหาคนแรกมันก็หยุดมองหาคนอื่นดังนั้นหากมี.bash_profileใน$HOMEbash ของฉันจะไม่มองหา.bash_loginและ.profileอีกต่อไป

จากชื่อไฟล์ทั้งสามนี้ Ubuntu จะใช้ค่าเริ่มต้นโดย.profileคุณสามารถเปลี่ยนชื่อเป็น.bash_profileหากคุณต้องการ:

mv ~/.profile ~/.bash_profile

ตอนนี้ถ้าเราเปิดเปลือกทุบตีใหม่โดยใช้bash -l, su - $USER, sudo -u $USER -iหรือคำสั่งอื่น ๆ ที่วิ่งทุบตีเป็นเปลือกเข้าสู่ระบบที่~/.bash_profileจะได้รับที่มา

สิ่งสำคัญที่ควรทราบ:

สิ่งที่ฉันได้พูดคุยเกี่ยวกับจนถึงตอนนี้ใช้เฉพาะกับตัวเองทุบตีเมื่อคุณเข้าสู่ระบบจาก GUI ผู้จัดการการแสดงผลมีหน้าที่รับผิดชอบในการจัดหาไฟล์ที่ถูกต้อง

Ubuntu ใช้gdm3เป็นเครื่องมือจัดการหน้าจอถ้าเราดู: /etc/gdm3/Xsessionเราจะเห็นว่าไม่มีไฟล์ใดที่จะได้รับยกเว้น.profile:

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

ดังนั้นหากคุณใช้ GUI เพื่อเข้าสู่ระบบให้เก็บไฟล์ไว้ใน.profileชื่อมิฉะนั้นคุณอาจพลาดตัวแปรและการตั้งค่าบางอย่างในสภาพแวดล้อมของคุณ

ฉันเดาตัวเลือกที่ดีกว่าคือการสร้าง symlink ไปที่.profile:

ln -s ~/.profile ~/.bash_profile

ตอนนี้ข้อมูลของคุณอาศัยอยู่ใน.profile, gdmไม่พลาดโหลดอะไรทุบตี.bash_profileที่เป็นจริง.profileและโดยการแก้ไขแต่ละของพวกเขาคุณจะได้รับผลเดียวกัน

ไม่พบโปรไฟล์

หากคุณยังไม่มีให้.profileหยิบสำเนาจากที่นี่:

cp /etc/skel/.profile ~/.profile

หรือ

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile

แต่ถ้าBashค้นหา ~ / .bash_profile ก่อนแล้วทำไมมันถึงไม่ทำเช่นนี้ใน Ubuntu? Ubuntu ปรับเปลี่ยน Bash แล้วหรือยัง? ดูเหมือนว่าจะแปลก man bashบน Ubuntu ยังคงอธิบายว่าจะค้นหา. bash_profile อย่างไรก่อน
Jonathan Hartley

ค้นหา.bash_profile ก่อนไม่พบ (เพราะไม่มีอยู่) จากนั้น.bash_loginค้นหาไม่พบอีกครั้ง (เนื่องจาก Ubuntu ไม่ได้ใช้ชื่อเหล่านี้สอง) สุดท้ายจะค้นหา.profileและใช่มีอยู่ ดังนั้นหากคุณสร้าง a .bash_profileขึ้น~มาคุณจะเขียนทับอูบุนตู~/.profileมันเป็นพฤติกรรมเริ่มต้นของ bash ที่ไม่มีการแก้ไขใด ๆ ที่นี่
Ravexina

ใช่ฉันคิดว่าตอนแรกเหมือนกัน! และสิ่งที่คุณอธิบายจะเกิดขึ้นกับ RHEL แต่บน Ubuntu มันทำไม่ได้ ถ้าฉันสร้าง.bash_profileมันจะไม่อ่าน ฉันเพิ่งรู้ว่านี่เป็นเพราะ Ubuntu ไม่ได้ใช้ 'Bash' เป็นเชลล์ล็อกอิน GUI อีกต่อไป มันใช้ 'Dash' แทน ฉันคิดว่านี่เป็นจริงตั้งแต่ประมาณ 18.04
Jonathan Hartley

คุณพลาดจุดที่นี่ ที่จริงแล้วเรากำลังพูดถึง bash เองสิ่งที่ฉันพูดที่นี่คือ Ubuntu creats '.profile' และไม่ใช่คนอื่นดังนั้นถ้าเราเปิด bash shell ใหม่ (login shell) นั่นเป็นคำสั่งในการอ่านไฟล์เหล่านี้ไม่ได้ ' ไม่ว่าเราจะใช้ distro อะไร :)
Ravexina

หากผู้อ่านเปลี่ยนชื่อ. profile เป็น. bash_profile เป็นคำตอบของคุณแนะนำสำหรับผู้ใช้บน Ubuntu ไฟล์นั้นจะไม่ถูกอ่านในการเข้าสู่ระบบหรือเปิดเทอร์มินัล คุณได้ทำลายระบบของพวกเขา วิธีเดียวที่ไฟล์จะได้รับการอ่านคือถ้าพวกเขาเปิดตัวเซสชันทุบตีด้วยอาร์กิวเมนต์ '--login' เพื่อให้มันเป็นเปลือกเข้าสู่ระบบอย่างชัดเจน สิ่งนี้จะไม่เกิดขึ้นโดยอัตโนมัติบนเดสก์ท็อป
Jonathan Hartley

5

นั่นหมายความว่าไม่มีไฟล์อยู่ แต่คุณสามารถสร้างไฟล์และbashดำเนินการ / แหล่งที่มาของไฟล์หากbashถูกเรียกเป็นเปลือกเข้าสู่ระบบ ดังนั้นเวลาคุณเข้าสู่ระบบผ่านเปลือก (ตัวอย่างเช่นผ่านssh)

หากคุณต้องการให้เนื้อหาดำเนินการทุกครั้งที่คุณเปิดเทอร์มินัลคุณควรแก้ไข.bashrcไฟล์แทน


คุณจะทราบได้อย่างไรว่าทำไมไฟล์. bash_profile หายไป?
Roledenez

คุณสามารถคัดลอกจาก/etc/skel/ไดเรกทอรี
Frantique

มันเป็นการออกแบบที่ได้รับการยอมรับ แต่นั่นไม่ได้หมายความว่าไม่สามารถทำได้
ความโกลาหล

ฉันอธิบายเหตุผลที่.bash_profileหายไป (และไม่ทำงาน) บน Ubuntu ในความคิดเห็นเกี่ยวกับคำตอบอื่น ๆ
Jonathan Hartley

2

คำตอบยอดนิยมที่จะใช้~/.profileแทน~/.bash_profileไม่ได้ผลสำหรับฉัน

การแก้ไข.bashrcทำงานได้

เพียงแค่:

vim ~/.bashrc

หมายเหตุ: ฉันใช้ Ubuntu WSL


ใน Linux ของแท้ไฟล์. profile จะถูกนำไปใช้เมื่อคุณลงชื่อเข้าใช้ GUI หรือเชื่อมต่อจากระยะไกลหรือเข้าสู่คอนโซลเช่นหลังจากกด ctrl + shift + F2 มันควรจะเป็นตัวแทนของเวลาเริ่มต้นที่คุณเข้าสู่เครื่องสร้างเปลือกซึ่งเป็นผู้ปกครองกับกระบวนการอื่น ๆ ทั้งหมดที่คุณสร้างในภายหลัง ฉันสงสัยว่าใน WSL ไม่มีสิ่งใดที่เป็นเช่นนี้ดังนั้นโปรไฟล์ของคุณอาจไม่ถูกอ่าน
Jonathan Hartley

เหมือนกับฉัน. ~/.profileเพิ่งไม่โหลดตามค่าเริ่มต้นใน Ubuntu 18.04
javapowered

0

ถ้าคุณหมายถึง. bashrc คุณจะพบมันในโฟลเดอร์บ้านของคุณ หากไม่มีคุณสามารถคัดลอกจากโฟลเดอร์ / etc / skel ไปยังโฟลเดอร์บ้านของคุณ

หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้โปรดไปที่หน้า stefaan lippens

http://stefaanlippens.net/bashrc_and_others

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