ฉันมี.bash_profile
ในโฮมไดเร็กตอรี่ของฉัน, แต่มันไม่ได้ถูกเรียกใช้บนล็อกอิน. ถ้าฉันทำสิ่งต่อไปนี้สิ่งต่าง ๆ ดูเหมือนจะเป็นอย่างที่ฉันคาดไว้:
ssh myhost
bash
source ~/.bash_profile
แต่ตามปกติแล้วทุกอย่างจะเกิดขึ้นกับการเข้าสู่ระบบ คิด?
ฉันมี.bash_profile
ในโฮมไดเร็กตอรี่ของฉัน, แต่มันไม่ได้ถูกเรียกใช้บนล็อกอิน. ถ้าฉันทำสิ่งต่อไปนี้สิ่งต่าง ๆ ดูเหมือนจะเป็นอย่างที่ฉันคาดไว้:
ssh myhost
bash
source ~/.bash_profile
แต่ตามปกติแล้วทุกอย่างจะเกิดขึ้นกับการเข้าสู่ระบบ คิด?
คำตอบ:
ใช้:
chsh
ป้อนรหัสผ่านและระบุพา ธ ไปยังเชลล์ที่คุณต้องการใช้
/bin/bash
สำหรับทุบตีที่จะเป็น สำหรับ zsh /usr/bin/zsh
ที่จะเป็น
sudo chsh -s /bin/bash username
นอกจากคำตอบของอากิระคุณยังสามารถแก้ไขไฟล์/ etc / passwdของคุณเพื่อระบุเชลล์เริ่มต้นของคุณ
คุณจะพบบรรทัดเช่นตัวอย่างนี้:
john:x:1000:1000:john,,,:/home/john:/bin/sh
เชลล์ถูกระบุในตอนท้าย
/etc/passwd
และคุณระวังคำตอบของ John คือการใช้เครื่องมือที่ระบบจัดให้อย่างดี
คุณอาจตรวจสอบโปรแกรมปลายทางของคุณ อาจถูกกำหนดค่าให้เรียกใช้ / bin / sh แทน / bin / bash
Bash ดำเนินการ. bash_profile สำหรับเซสชันการเข้าสู่ระบบเท่านั้น .bashrc ถูกเรียกใช้งานสำหรับเซสชัน bash ทั้งหมดไม่ใช่เฉพาะเซสชันการเข้าสู่ระบบ ลอง sourcing .bash_profile จาก. bashrc (หลีกเลี่ยงการพึ่งพาแบบวงกลม!) หรือกำหนดค่าโปรแกรมเทอร์มินัลของคุณเพื่อรัน / bin / bash -l เป็นโปรแกรมเชลล์
ทางเลือกหนึ่งคือเปลี่ยนชื่อสคริปต์เริ่มต้นของคุณเป็น. profile ไฟล์นี้จะเป็นแหล่งที่มาโดยส่วนใหญ่เปลือกหอย Unix
เปิดใช้งาน bash:
$ /bin/bash
เปลี่ยนเชลล์สำหรับผู้ใช้:
$ sudo usermod -s /bin/bash username
ที่อยู่:
-s, --shell SHELL new login shell for the user account
sudo
สามารถเข้าถึงระบบนั้นได้? ทำไมคุณถึงให้คำแนะนำในแง่ของการเปลี่ยนเปลือกเข้าสู่ระบบของผู้ใช้คนอื่น?
หากต้องการทำให้เชลล์เป็นค่าเริ่มต้นให้ตรวจสอบก่อนว่าติดตั้งและรับรู้บนคอมพิวเตอร์ของคุณโดยดูที่เนื้อหาของ/etc/shells
:
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish
จากนั้นใช้chsh
เพื่อเปลี่ยนเปลือกของคุณ:
$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)
คำถามของคุณมีข้อมูลไม่เพียงพอที่ฉันจะพูดได้อย่างแน่นอน แต่ฉันเคยประสบปัญหาเดียวกันมาก่อน สมมติว่าคุณได้รับ / bin / bash ตั้งไว้ในรายการรหัสผ่านของคุณมันอาจเป็นวิธีที่เทอร์มินัลของคุณเปิดตัว
หากคุณพยายามเปิดใช้งานเทอร์มินัล GUI บอกว่าgnome-terminal
คุณอาจคาดว่าเชลล์จะอ่านไฟล์ bash startup ของคุณ อย่างไรก็ตามสิ่งนี้จะไม่เกิดขึ้นบน Ubuntu และอาจเป็นระบบอื่นตามค่าเริ่มต้น
วิธีที่ผมได้แก้ไขมันบน Ubuntu คือการแก้ไขการตั้งค่า gnome-terminal, bash -l
และการตั้งค่าคำสั่งเริ่มต้นที่จะเป็น สั้นสำหรับ-l
--login
สิ่งนี้บอกว่า bash to startup เป็น login shell ซึ่งเป็นสาเหตุให้โหลดสคริปต์เริ่มต้นเมื่อคุณเข้าสู่ระบบผ่าน ssh
ฉันแน่ใจว่ามีเหตุผลที่ดีสำหรับการเป็นแบบนี้ แต่ฉันพบว่ามันน่าแปลกใจและน่ารำคาญกว่าเล็กน้อยเมื่อฉันแชร์โปรไฟล์เดียวกันในระบบ linux, cywgin และ macos
~/.profile
หรือ~/.bash_login
เพราะมีเพียงหนึ่งในสามที่มีที่มา (ผมลืมลำดับที่แน่นอน.)