[РЕШЕНО]XFCE Archlinux не исполняет .bashrc

Другие DE
Ответить
lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

Коллеги, казалось бы поставил Арч, поставил xfce, все вцелом работает, не нарадуюсь (удаленная машина). Но ни в пользовательских аккаунтах, ни в рутовом не исполняются alias ls='ls -la --color=auto'
Права вроде верные -
-rw-r--r-- 1 root root 191 сен 2 12:21 .bashrc

ЧЯДНТ?

Ответ указал уважаемый Vasek https://archlinux.com.ru/forum/viewtopi ... 9672#p9672
Последний раз редактировалось lnx 05.09.2025 21:41, всего редактировалось 2 раза.
beisic
Сообщения: 64
Зарегистрирован: 16.09.2022

#

lnx:ls='ls
ls - это уже команда, а в алиасе Вы ее опять повторяете. Получается как-бы цикл одной и той же команды.
Замените в алиасе ls на что-то другое, например на lls .
Arhei
Сообщения: 52
Зарегистрирован: 04.07.2025

#

beisic: ls - это уже команда, а в алиасе Вы ее опять повторяете. Получается как-бы цикл одной и той же команды.
https://www.gnu.org/software/bash/manua ... ml#Aliases
The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias ls to "ls -F", for instance, and Bash does not try to recursively expand the replacement text.
Arhei
Сообщения: 52
Зарегистрирован: 04.07.2025

#

lnx: Но ни в пользовательских аккаунтах, ни в рутовом не исполняются alias ls='ls -la --color=auto'
в смысле не исполняются ? вообще ? или что-то выводит но не то что нужно ?

что показывает
type ls
lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

это была копия работающего на локальной машине. С тем же успехом не работает ll и другие. Оно просто не считывается.
Arhei
Сообщения: 52
Зарегистрирован: 04.07.2025

#

lnx:Оно просто не считывается.
что значит не считывается ? выдаёт какую-то ошибку ? например
$ ll
bash: ll: command not found
vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

для начала смотри вывод alias ...

мой вывод
alias | grep color
alias ls='ls --color=auto'

Ошибки не исчезают с опытом - они просто умнеют

Arhei
Сообщения: 52
Зарегистрирован: 04.07.2025

#

lnx
для начала убедитесь что находитесь именно в bash оболочке
$  echo $0
bash
$ type -a ls
ls — это псевдонимом для «ls --color=auto»
ls является /usr/bin/ls
ls является /usr/lib/plan9/bin/ls
$ sh
sh-5.3$ echo $0
sh
sh-5.3$ type -a ls
ls является /usr/bin/ls
ls является /usr/lib/plan9/bin/ls
ALiEN
Аватара пользователя
Сообщения: 275
Зарегистрирован: 23.08.2022

#

bash -v

🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

 echo $0
-bash
[root@DT ~]# ll
-bash: ll: command not found
[root@DT ~]# 

 cat /root/.bashrc
alias ls='ls -la --color=auto'
alias ll='ls -latr --color=auto'
export EDITOR=/usr/bin/vim
export VISUAL=$EDITOR

за bash -v - спасибо. Но выводов сделать не смог -
bash -v
#
# /etc/bash.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

# Prevent doublesourcing
if [[ -z "${BASHRCSOURCED}" ]] ; then
  BASHRCSOURCED="Y"
  # the check is bash's default value
  [[ "$PS1" = '\s-\v\$ ' ]] && PS1='[\u@\h \W]\$ '
  case ${TERM} in
    Eterm*|alacritty*|aterm*|foot*|gnome*|konsole*|kterm*|putty*|rxvt*|tmux*|xterm*)
      PROMPT_COMMAND+=('printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"')
      ;;
    screen*)
      PROMPT_COMMAND+=('printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"')
      ;;
  esac
fi

if [[ -r /usr/share/bash-completion/bash_completion ]]; then
  . /usr/share/bash-completion/bash_completion
fi
alias ls='ls -la --color=auto'
alias ll='ls -latr --color=auto'
export EDITOR=/usr/bin/vim
export VISUAL=$EDITOR

printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"
[root@DT ~]# 


Последний раз редактировалось lnx 03.09.2025 10:44, всего редактировалось 1 раз.
vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

Алиса
Проверка работы команды alias (создания псевдонимов команд)
- выполнить команду alias --- выводит список всех созданных и существующих псевдонимов в текущей сессии терминала
- выполнить команду alias -p --- выводит список всех активных в данный момент псевдонимов
- проверить, работает ли псевдоним, можно с помощью команды type <name> (на пример, type ls ) --- если псевдоним определён, она выведет, что псевдоним заменён командой

Ошибки не исчезают с опытом - они просто умнеют

lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

если первой выполнить команду bash, то далее все работает "как надо", но ведь -
 echo $0
bash
?!
Скажу больше, установка была строго по инструкции. И впервые с таким артефактом. Причем на трех машинах запуск происходит без вских gdm и ему подобных, и лишь на одной такая проблема.
Проверка правильности записей в bashrc проходит автоматом и сведения об ошибках всегда выдаются в консоль при логине. Ошибок нет.
vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

продуй создалть файл ~/.bash_profile
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi
reboot или выполнить команду source ~/.bashrc

Ошибки не исчезают с опытом - они просто умнеют

Arhei
Сообщения: 52
Зарегистрирован: 04.07.2025

#

выше вы писали:
 echo $0
-bash
[root@DT ~]# ll
-bash: ll: command not found
[root@DT ~]# 
...
там у вас bash именно так с черточкой и выводит ? "-bash"
lnx: если первой выполнить команду bash, то далее все работает "как надо"
если судить по загрузке конфигурационных файлов(https://wiki.archlinux.org/title/Bash#C ... tion_files) bash то скорее всего при первоначальном вызове оболочки она загрузилась как "Login shells" а не "Interactive"
чтобы проверить интерактивна ли оболочка введите
echo $-
если оболочка интерактивна то в выводе должна присутствовать буква
i
если её нету значит bash запущен в режиме "Login shells" и тогда естественно алиасы не будут подцепляться из указанного конфига, что в свою очередь, как мне кажется, может быть связанно с доступом через ssh
все вцелом работает, не нарадуюсь (удаленная машина)
lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

Arhei:может быть связанно с доступом через ssh
как в воду глядели - действительно, установка по инструкции, но по схеме "загрузились с флэшки + запуск демона ssh" и далее дистанционно по инструкции. Вопрос как это исправить? чтобы запускалась всегда интерактивно?
x230w
Аватара пользователя
Сообщения: 15
Зарегистрирован: 08.08.2025

#

beisic подсказал же - использовать lls вместо ls

● i3-3210 / 10GB / VGA Intel HD 2500 / SSD 240GB / Arch Linux / Openbox / Ungoogled-Chromium
● t.me/arch_linuxru

indeviral
Аватара пользователя
Сообщения: 275
Зарегистрирован: 15.08.2022

#

vasek: создалть файл ~/.bash_profile
+

Ошибки в тексте-неповторимый стиль автора©

lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

Да, создать. Точнее он и был, но не было в нем строки
[[ -f ~/.bashrc ]] && . ~/.bashrc

Удивлен. Строка, да и сам такой файл есть далеко не не всех машинах, и там, где есть, далеко не всегда есть эта строка. Но ПБТ (пусть Будет Так). Спасибо за тык носом и расширение моего кругозора.
ALiEN
Аватара пользователя
Сообщения: 275
Зарегистрирован: 23.08.2022

#

lnx: да и сам такой файл есть далеко не не всех машинах, и там, где есть, далеко не всегда есть эта строка.
В арче есть. Ну а если вы любите работать под рутом - ССЗБ.
$: cat /etc/skel/.bash_profile
#
# ~/.bash_profile
#

[[ -f ~/.bashrc ]] && . ~/.bashrc

🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Arhei
Сообщения: 52
Зарегистрирован: 04.07.2025

#

lnx: Да, создать. Точнее он и был, но не было в нем строки
[[ -f ~/.bashrc ]] && . ~/.bashrc

Удивлен. Строка, да и сам такой файл есть далеко не не всех машинах, и там, где есть, далеко не всегда есть эта строка.
довольно странно, так как сам файл /etc/skel/.bash_profile (и его содержимое)
$ cat /etc/skel/.bash_profile
#
# ~/.bash_profile
#

[[ -f ~/.bashrc ]] && . ~/.bashrc
хоть и не является частью самой программы bash, но добавляется многими дистрибутивами как часть пакета bash в том числе и в Арче.
Файлы из /etc/skel/(папка шаблонов) копируются в папку пользователя при его создании.
То есть, у нас есть три варианта, вернее причины, отсутствия файла(или его содержимого) ~/.bashrc в папке пользователя
1) отсутствует или нарушен шаблон файла /etc/skel/.bash_profile
2) при создании пользователя не использовался ключ -m, --create-home в команде useradd, ну или использовали ключ -k и не туда указали.
https://man.archlinux.org/man/useradd.8
-m, --create-home
Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined with the -k option) will be copied to the home directory.
...
-k, --skel SKEL_DIR
The skeleton directory, which contains files and directories to be copied in the user's home directory, when the home directory is created by useradd.

This option is only valid if the -m (or --create-home) option is specified.

If this option is not set, the skeleton directory is defined by the SKEL variable in /etc/default/useradd or, by default, /etc/skel.

Absolute symlinks that link back to the skel directory will have the /etc/skel prefix replaced with the user's home directory.
3) шаловливые ручки после установки случайно потёрли
в общем, скорее всего, что-то из этого, разбирайтесь.

Что касается определения что у нас запущенно login shell или interactive shell, вышеописанный мною способ через echo $- к сожалению не очень надёжно работает, но есть и другой способ с помощью shopt
$ bash -l
$ shopt | grep login_shell
login_shell         	on
$ exit
$ bash -i
$ shopt | grep login_shell
login_shell         	off
$ exit
ну и на по следок, чтобы увидеть какие конфиг файлы подгрузит баш можно использовать вышеуказанную ALiEN команду
bash -v
но в сыром виде она мало пригодна
надо её просто хорошенько приготовить
для login shell
timeout -s INT 1 script -c 'bash --verbose -l' | grep -e "# /" -e "# ~/"
для interactive shell
timeout -s INT 1 script -c 'bash --verbose -i' | grep -e "# /" -e "# ~/"
так как в баш-конфигах обычно принято указывать имя файла(закоментированное) в начале скрипта, то просто грипнем его, а за одно и отделим login(ключ -l) и interactive(ключ -i) shell

вывод будет примерно следующий
$ timeout -s INT 1 script -c 'bash --verbose -l' | grep -e "# /" -e "# ~/"
# /etc/profile
# /etc/locale.conf loads and overrides by kernel command line is done by systemd
# /etc/bash.bashrc
# ~/.bash_profile
# ~/.bashrc

Session terminated, killing shell... ...killed.

$ timeout -s INT 1 script -c 'bash --verbose -i' | grep -e "# /" -e "# ~/"
# /etc/bash.bashrc
# ~/.bashrc

Session terminated, killing shell... ...killed.
Ответить