Score:1

การตั้งค่านามแฝงหรือการทำงานเมื่อเข้าสู่ระบบ

ธง at

hirsute ที่เพิ่งติดตั้งใหม่ = 21.04. ติดตั้งนอกแพ็คเกจ สร้างบัญชีส่วนตัวของฉันเอง .bashrc เริ่มต้นมีอยู่ใน homedir ของฉัน และเพื่อให้แน่ใจว่ามี .bash_aliases ด้วย ทั้งสองกล่าวถึง นามแฝง ll='ls -alF' ยังคงใช้นามแฝงนี้ไม่ได้หลังจากเข้าสู่ระบบ นี่เป็นข้อผิดพลาดหรือฉันพลาดอะไรไปหรือเปล่า

NAME="อูบุนตู"
VERSION="21.04 (ฮิปโปขนดก)"

karel@schal:~$ pwd ; ls -al .bash*
/บ้าน/คาเรล
-rwxr-xr-x 1 ผู้ใช้ karel 53 ก.ย. 26 06:22 .bash_aliases
-rw------- 1 ผู้ใช้ karel 9834 26 ก.ย. 06:23 .bash_history
-rw-r--r-- 1 ผู้ใช้ karel 3771 31 ส.ค. 23:17 น. bashrc
karel@schal:~$ cat .bash_aliases
นามแฝง ll='ls -alF'
นามแฝง la='ls -A'
นามแฝง l='ls -CF'
karel@schal:~$ll
ll: ไม่พบคำสั่ง

แก้ไขหลังจากความคิดเห็นที่ไม่เป็นมิตรเพื่อเพิ่ม:

karel@wiske:~$ ssh [email protected]
รหัสผ่านของ [email protected]: 
ยินดีต้อนรับสู่ Ubuntu 21.04 (GNU/Linux 5.11.0-34-generic x86_64)

 * เอกสาร: https://help.ubuntu.com
 * การจัดการ: https://landscape.canonical.com
 * การสนับสนุน: https://ubuntu.com/advantage

0 ปรับปรุงได้ทันที


รายการอัปเดตที่มีอยู่มีอายุมากกว่าหนึ่งสัปดาห์
ในการตรวจสอบการอัปเดตใหม่ให้รัน: sudo apt update
เข้าระบบครั้งล่าสุด: อา. 26 ก.ย. 09:37:21 น. 2021
karel@schal:~$ นามแฝง
karel@schal:~$ /bin/bash
karel@schal:~$ นามแฝง
นามแฝง alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/ ^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
นามแฝง egrep='egrep --color=auto'
นามแฝง fgrep='fgrep --color=auto'
นามแฝง grep='grep --color=auto'
นามแฝง l='ls -CF'
นามแฝง la='ls -A'
นามแฝง ll='ls -alF'
นามแฝง ls='ls --color=auto'

และลักษณะการทำงานนั้นจะเหมือนกัน ไม่ว่าจะเป็นการเข้าสู่ระบบต่อ ssh หรือในสภาพแวดล้อมแบบกราฟิกในเครื่องหรือบนคอนโซลแบบข้อความอย่างเดียวในเครื่อง (dev/tty5 และที่คล้ายกัน)

นอกจากนี้ ตามที่ร้องขอ ตัดตอนมาจาก ~/.bashrc:

# คำจำกัดความนามแฝง
# คุณอาจต้องการใส่ส่วนเพิ่มเติมทั้งหมดของคุณลงในไฟล์แยกต่างหาก เช่น
# ~/.bash_aliases แทนที่จะเพิ่มที่นี่โดยตรง
# ดู /usr/share/doc/bash-doc/examples ในแพ็คเกจ bash-doc

ถ้า [ -f ~/.bash_aliases ]; แล้ว
    . ~/.bash_aliases
ไฟ

[แก้ไขเพิ่มเติมตามคำขอ]

karel@schal:~$ ls -al ~/.bash_profile ~/.bash_login ./.profile
ls: ไม่สามารถเข้าถึง '/home/karel/.bash_profile': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
ls: ไม่สามารถเข้าถึง '/home/karel/.bash_login': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
ls: ไม่สามารถเข้าถึง './.profile': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
karel@schal:~$ ps -p $$ | หาง -n1 | awk '{พิมพ์ $NF}'
ทุบตี
vn flag
คุณต้อง [รวม/แหล่งที่มาจาก `.bashrc` ของคุณ](https://askubuntu.com/a/5278/349837) เรียกใช้ `นามแฝง` เพื่อแสดงนามแฝงที่มีอยู่ทั้งหมดของคุณ
Karel Adams avatar
at flag
ขอบคุณปาโบล แต่นั่นได้รับการตรวจสอบแล้วและเป็นเรื่องปกติสำหรับการติดตั้งเริ่มต้น "วานิลลา" เท่านั้น สำหรับคำสั่ง "นามแฝง" จะส่งคืนเอาต์พุตเป็นศูนย์
sudodus avatar
jp flag
มันทำงาน [ชั่วคราว] เพื่อเพิ่มนามแฝงโดยตรงในบรรทัดคำสั่งหรือไม่ เช่น `alias rm='rm -i'` ? การทำงาน [อย่างต่อเนื่อง] เพื่อเพิ่มนามแฝงใน `~/.bashrc` ในครั้งต่อไปที่คุณเปิดหน้าต่างเทอร์มินัลหรือหน้าจอข้อความด้วย 'bash' หรือไม่
Karel Adams avatar
at flag
การเพิ่มนามแฝงจากบรรทัดคำสั่งใช้งานได้ใช่ แต่อะไรก็ตามที่ฉันปรับแต่งเป็น .bashrc หรือ .bash_aliases จะไม่มีผลกระทบใดๆ ฉันเริ่มสงสัยว่า .bashrc จะถูกดำเนินการเลยหรือไม่ ตรวจสอบ /var/log/syslog แต่ไม่พบสิ่งใดที่เกี่ยวข้อง
sudodus avatar
jp flag
ดูเหมือนว่าคุณกำลังรันโปรแกรมเชลล์อื่นอยู่ใช่ไหม จะเกิดอะไรขึ้นถ้าคุณเริ่ม `bash` อย่างชัดเจนด้วยบรรทัดคำสั่ง `bash` ?
sudodus avatar
jp flag
คุณได้ปรับแต่งคำสั่งหรือไฟล์คอนฟิกูเรชันที่อาจหยุดดำเนินการ `~/.bashrc` หรือไม่ หรือเป็นไปได้ว่ามีคนอื่นปรับแต่งระบบเพื่อให้เกิดขึ้น?
terdon avatar
cn flag
โปรด [แก้ไข] คำถามของคุณ และ i) บอกเราว่าจะเกิดอะไรขึ้นหากคุณเพิ่มคำจำกัดความของนามแฝงใน `~/.bashrc` และ _not_ ที่ไม่ได้มาตรฐาน `~/.bash_aliases` ใช้งานได้หรือไม่ ii) แสดงให้เราเห็นผลลัพธ์ของ `echo $SHELL` และ `ps aux -p $$` เพื่อให้เราเห็นว่าคุณกำลังเรียกใช้เชลล์ตัวใด iii) ชี้แจงวิธีการเข้าสู่ระบบของคุณ นี่คือระบบโลคัลหรือรีโมต คุณเข้าสู่ระบบผ่าน GUI หรืออาจใช้ ssh? สุดท้าย อย่าบอกเราว่า "ตรวจสอบแล้ว"แสดงบรรทัดจริงจาก `~/.bashrc` ของคุณที่อ่านไฟล์ `~/.bash_aliases` เนื่องจากนั่นไม่ใช่คุณสมบัติ bash และเป็นการดัดแปลงของ Ubuntu
vanadium avatar
cn flag
ก่อนหน้านี้จะมีบางอย่างผิดปกติใน `.bashrc` ของคุณ ตรวจสอบโดยการย้ายออก (เปลี่ยนชื่อ) จากนั้นคัดลอกในค่าเริ่มต้นของระบบ .bashrc (ซึ่งมีการตั้งค่าเป็น .bash_aliases ต้นทาง): cp /etc/skel/.bashrc
sudodus avatar
jp flag
อาจเป็นไปได้ว่าคุณไม่ได้เรียกใช้ bash แต่ใช้เชลล์อื่นตามค่าเริ่มต้น เช่น csh, tcsh, zsh กรุณาตรวจสอบตามคำสั่งใน comment ของ terdon
Karel Adams avatar
at flag
@vanadium: ฉันตรวจสอบแล้ว แต่ก็ไม่มีประโยชน์ ```diff .\.bashrc /etc/skel/.bashrc``` ให้ผลลัพธ์เป็นศูนย์
terdon avatar
cn flag
ฉันถือว่าคุณหมายถึงความคิดเห็นของฉันเมื่อคุณพูดว่า "ความคิดเห็นที่ไม่เป็นมิตร" ถ้าอย่างนั้นขออภัย! ฉันไม่ได้ตั้งใจจะเจอเป็นคนหยาบคาย ถ้าเจอแบบนี้ ฉันต้องแสดงออกไม่ดีแน่ๆ ขอโทษด้วย. สำหรับสิ่งที่คุ้มค่า ฉันได้ตอบคำถามของคุณตั้งแต่เมื่อวานแล้ว
Score:3
ธง cn

เมื่อเข้าสู่ระบบผ่าน ssh คุณกำลังเรียกใช้สิ่งที่เรียกว่า an เชลล์ล็อกอินแบบโต้ตอบและไม่ใช่ เชลล์ที่ไม่ใช่การเข้าสู่ระบบแบบโต้ตอบ ซึ่งเป็นสิ่งที่เกิดขึ้นเมื่อคุณเปิดเทอร์มินัลเมื่อเข้าสู่ระบบแล้ว ล็อกอินเชลล์จะไม่อ่าน ~/.bashrc และอ่านแทน ~/.profile, ~/.bash_profile และ ~/.bash_login. นี่คือสาเหตุที่นามแฝงของคุณไม่ปรากฏ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนี้และความแตกต่างระหว่างไฟล์เริ่มต้นของเชลล์ประเภทต่างๆ โปรดดูที่ เหตุใดสคริปต์ใน /etc/profile.d/ จึงถูกละเว้น (นามแฝงทุบตีทั้งระบบ). นี่คือเหตุผลที่คุณได้รับนามแฝงเมื่อคุณเรียกใช้ /ถัง/ทุบตี เนื่องจากนั่นเริ่มต้นเชลล์ที่ไม่ได้เข้าสู่ระบบและจะอ่าน ~/.bashrc.

นั่นคือค่าเริ่มต้นของ Ubuntu ~/.profile ไฟล์มีบรรทัดเหล่านี้:

# รวม .bashrc ถ้ามี
ถ้า [ -f "$HOME/.bashrc" ]; แล้ว
. "$HOME/.bashrc"
ไฟ

ดังนั้นมันควรจะอ่านของคุณ ~/.bashrc เช่นกัน. หากไม่เกิดขึ้น ฉันสงสัยว่ามีสิ่งใดสิ่งหนึ่งต่อไปนี้:

  1. คุณ (หรือบางคน) ได้สร้าง ~/.bash_profile ไฟล์. ที่จะทำให้เกิดการ ~/.profile ไฟล์ที่จะละเว้น ตามที่อธิบายไว้ใน ผู้ชายทุบตี (เน้นของฉัน):

    เมื่อมีการเรียกใช้ bash เป็นเชลล์การเข้าสู่ระบบแบบโต้ตอบ หรือ เป็นเชลล์ที่ไม่โต้ตอบกับ --login ตัวเลือกมัน อ่านและดำเนินการคำสั่งจากไฟล์ก่อน /etc/profile ถ้ามีไฟล์นั้นอยู่ หลังจากอ่านจบ ไฟล์, มันมองหา ~/.bash_profile, ~/.bash_login และ ~/.profile ตามลำดับ และอ่านและดำเนินการ comâ mands จากอันแรกที่มีอยู่และสามารถอ่านได้. อาจใช้ตัวเลือก --noprofile เมื่อเชลล์เป็น เริ่มยับยั้งพฤติกรรมนี้

    ดังนั้นถ้าอย่างใดอย่างหนึ่ง ~/.bash_profile หรือ ~/.bash_login มีอยู่ แล้วอะไรเข้ามา ~/.profile ถูกละเว้น

  2. คุณ (หรือคนอื่น) ได้สร้างของคุณเอง ~/.profile ซึ่งไม่ได้มา ~/.bashrc.

  3. คุณไม่ได้วิ่งจริงๆ ทุบตี. คุณสามารถตรวจสอบได้โดยเรียกใช้ ป.ล. -p $$ | หาง -n1 | awk '{พิมพ์ $NF}' ในเชลล์ที่คุณไม่มีนามแฝง หากผลลัพธ์ไม่ใช่ ทุบตีคุณกำลังเรียกใช้เชลล์อื่น บางทีคุณอาจตั้งค่าเชลล์ล็อกอินเริ่มต้นเป็น , ซึ่งเป็น เส้นประ บนอูบุนตู คุณสามารถตรวจสอบมูลค่าปัจจุบันด้วย สะท้อน $SHELL และคุณสามารถเปลี่ยนได้ด้วย ชช.


จากการแก้ไขล่าสุดของคุณ ดูเหมือนว่ากรณีของคุณคือ:

  1. คุณไม่มี ~/.profile ด้วยเหตุผลบางอย่าง. และจากการแก้ไขครั้งล่าสุดของคุณ ดูเหมือนว่าจะเป็นกรณีนี้ ดังนั้นเพียงแค่คัดลอกค่าเริ่มต้น .ข้อมูลส่วนตัว จาก /etc/skel และคุณน่าจะสบายดีในครั้งต่อไปที่คุณเข้าสู่ระบบ:

    cp /etc/skel/.profile ~/
    
Score:1
ธง at

@terdon พูดถูก: ด้วยเหตุผลบางอย่าง ไม่มี .profile ในโฮมเดียร์ของฉัน ทุกอย่างโอเคหลังจาก - ตามที่แนะนำ - cp /etc/skel/.profile ~

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา