Puncte:1

setările de alias și nici nu lucrează la conectare

drapel at

Hirsute nou instalat = 21,04. Instalat din pachet, am creat propriul meu cont personal, .bashrc implicit este prezent în homedir-ul meu și pentru a mă asigura că există și un .bash_aliases. Amândoi menționează alias ll='ls -alF' totuși, acest alias nu este disponibil după conectare. Este o eroare sau îmi scapă ceva?

NAME="Ubuntu"
VERSION="21.04 (Hirsute Hippo)"

karel@schal:~$ pwd ; ls -al .bash*
/acasă/karel
-rwxr-xr-x 1 utilizatori karel 53 sep 26 06:22 .bash_aliases
-rw------- 1 utilizatori karel 9834 26 septembrie 06:23 .bash_history
-rw-r--r-- 1 utilizatori karel 3771 31 august 23:17 .bashrc
karel@schal:~$ cat .bash_aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
karel@schal:~$ ll
ll: comanda nu a fost găsită

editat după un comentariu nu foarte prietenos, pentru a adăuga:

karel@wiske:~$ ssh [email protected]
parola lui [email protected]: 
Bun venit la Ubuntu 21.04 (GNU/Linux 5.11.0-34-generic x86_64)

 * Documentație: https://help.ubuntu.com
 * Management: https://landscape.canonical.com
 * Suport: https://ubuntu.com/advantage

0 actualizări pot fi aplicate imediat.


Lista actualizărilor disponibile are mai mult de o săptămână.
Pentru a verifica dacă există noi actualizări, rulați: sudo apt update
Ultima conectare: duminica 26 septembrie 09:37:21 2021
karel@schal:~$ alias
karel@schal:~$ /bin/bash
karel@schal:~$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || eroare ecou)" "$(history|tail -n1|sed -e '\''s/ ^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

și acel comportament este identic, indiferent dacă vă conectați prin ssh sau în mediul grafic local sau pe o consolă locală doar text (dev/tty5 și similare)

De asemenea, după cum sa cerut, extras din ~/.bashrc:

# Definiții alias.
# Poate doriți să puneți toate completările într-un fișier separat, cum ar fi
# ~/.bash_aliases, în loc să le adăugați aici direct.
# Vezi /usr/share/doc/bash-doc/examples în pachetul bash-doc.

if [ -f ~/.bash_aliases ]; atunci
    . ~/.bash_aliases
fi

[editat în continuare conform solicitării]

karel@schal:~$ ls -al ~/.bash_profile ~/.bash_login ./.profile
ls: nu poate accesa „/home/karel/.bash_profile”: Nu există un astfel de fișier sau director
ls: nu poate accesa „/home/karel/.bash_login”: Nu există un astfel de fișier sau director
ls: nu poate accesa „./.profile”: Nu există un astfel de fișier sau director
karel@schal:~$ ps -p $$ | coada -n1 | awk '{print $NF}'
bash
drapel vn
Trebuie să-l [includeți/sursă din `.bashrc`](https://askubuntu.com/a/5278/349837). Rulați `alias` pentru a lista toate aliasurile disponibile
Karel Adams avatar
drapel at
Mulțumesc, Pablo. Dar asta a fost verificat și este normal doar pentru instalarea implicită „vanilie”. În ceea ce privește comanda „alias”, returnează zero ieșire.
sudodus avatar
drapel jp
Funcționează [temporar] să adăugați un alias direct pe linia de comandă, de exemplu `alias rm='rm -i'`? Funcționează [persistent] să adăugați un alias în `~/.bashrc`, data viitoare când deschideți o fereastră de terminal sau un ecran de text cu `bash`?
Karel Adams avatar
drapel at
Adăugarea unui alias din linia de comandă funcționează, da. Dar orice modific la .bashrc sau .bash_aliases are efect zero. Încep să mă îndoiesc dacă .bashrc este executat deloc. Am verificat /var/log/syslog, dar nu am găsit nimic relevant.
sudodus avatar
drapel jp
Se pare că rulezi un alt program shell? Ce se întâmplă dacă porniți `bash` explicit cu linia de comandă `bash`?
sudodus avatar
drapel jp
Ați modificat oricare dintre comenzile sau fișierele de configurare, care ar putea opri executarea `~/.bashrc`? Sau este posibil ca altcineva să fi modificat sistemul pentru ca acest lucru să se întâmple?
terdon avatar
drapel cn
Vă rugăm să [editați] întrebările și i) spuneți-ne ce se întâmplă dacă adăugați o definiție de alias la `~/.bashrc` și _nu_ la `~/.bash_aliases` non-standard. Functioneaza? ii) arătați-ne rezultatul `echo $SHELL` și `ps aux -p $$`, astfel încât să putem vedea ce shell rulați. iii) Clarificați cum vă conectați. Este acesta un sistem local sau unul la distanță? Vă autentificați prin GUI sau poate prin ssh? În sfârșit, nu ne spune „a fost verificat”.Arată-ne linia reală din `~/.bashrc` care citește fișierul `~/.bash_aliases` deoarece aceasta nu este o caracteristică bash și este o modificare Ubuntu.
vanadium avatar
drapel cn
Ceva va fi în neregulă mai devreme în `.bashrc`. Verificați prin mutarea acestuia (redenumirea) apoi copierea în sistemul implicit .bashrc (care într-adevăr este configurat pentru sursa .bash_aliases): cp /etc/skel/.bashrc .
sudodus avatar
drapel jp
De asemenea, este posibil să nu rulați bash, ci un alt shell în mod implicit, de exemplu csh, tcsh, zsh. Vă rugăm să verificați conform comenzilor din comentariul lui terdon.
Karel Adams avatar
drapel at
@vanadium: M-am uitat la asta, dar fără rezultat. ```diff .\.bashrc /etc/skel/.bashrc``` a dat rezultate zero.
terdon avatar
drapel cn
Presupun că te referi la comentariul meu când spui „un comentariu nu foarte prietenos”. Daca da, scuze! Nu am vrut să par brusc. Dacă așa a apărut, probabil că m-am exprimat prost. Scuzele mele. Pentru cât valorează, am votat și eu întrebarea ta de ieri.
Puncte:3
drapel cn

Când vă conectați prin ssh, executați ceea ce este cunoscut sub numele de an shell interactiv de conectare, și nu un shell interactiv non-login ceea ce se întâmplă când deschideți un terminal odată conectat. Shell-urile de conectare nu citesc ~/.bashrc si in schimb citeste ~/.profil, ~/.bash_profile și ~/.bash_login. Acesta este motivul pentru care pseudonimele dvs. nu sunt prezente. Pentru mai multe detalii despre aceasta și despre diferențele dintre fișierele de inițializare ale diferitelor tipuri de shell, vezi De ce sunt ignorate scripturile din /etc/profile.d/ (alias-uri bash la nivel de sistem)?. Acesta este și motivul pentru care obțineți pseudonimele atunci când rulați /bin/bash deoarece asta pornește un shell non-login și va citi ~/.bashrc.

Acestea fiind spuse, implicit Ubuntu ~/.profil fișierul include aceste rânduri:

# includeți .bashrc dacă există
if [ -f "$HOME/.bashrc" ]; atunci
. „$HOME/.bashrc”
fi

Deci ar trebui să vă citească de fapt ~/.bashrc de asemenea. Dacă acest lucru nu se întâmplă, bănuiesc că unul dintre următoarele:

  1. Tu (sau cineva) ai creat un ~/.bash_profile fişier. Asta ar cauza ~/.profil fișier care trebuie ignorat. După cum se explică în man bash (sublinierea mea):

    Când bash este invocat ca un shell de conectare interactiv sau ca un shell non-interactiv cu opțiunea --login, it mai întâi citește și execută comenzi din fișier /etc/profile, dacă acel fișier există. După ce a citit asta fişier, caută ~/.bash_profile, ~/.bash_login și ~/.profile, în această ordine, și citește și execută comâ mands de la primul care există și este lizibil. Opțiunea --noprofile poate fi utilizată atunci când shell-ul este a început să inhibe acest comportament.

    Deci dacă oricare ~/.bash_profile sau ~/.bash_login există, apoi orice înăuntru ~/.profil este ignorat.

  2. Tu (sau altcineva) ti-ai creat propriul tau ~/.profil care nu provine ~/.bashrc.

  3. De fapt nu alergi bash. Puteți verifica acest lucru rulând ps -p $$ | coada -n1 | awk „{printează $NF}” în shell unde nu ai aliasuri. Dacă ieșirea nu este bash, rulați un alt shell. Poate ați setat shell-ul implicit de conectare la SH, care este liniuță pe Ubuntu. Puteți verifica valoarea curentă cu echo $SHELL si il poti schimba cu chsh.


Pe baza ultimei editări a dvs., se pare că cazul dvs. este:

  1. Nu ai un ~/.profil pentru un anumit motiv. Și, pe baza ultimei dvs. editări, acesta pare să fie cazul. Așa că doar copiați implicit .profil din /etc/skel și ar trebui să vă fie bine data viitoare când vă conectați:

    cp /etc/skel/.profile ~/
    
Puncte:1
drapel at

@terdon a avut dreptate: dintr-un motiv sau altul, nu a existat niciun .profil în homedir-ul meu. Totul a fost în regulă după ce - așa cum am sugerat - cp /etc/skel/.profile ~

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.