Рейтинг:1

настройки псевдонима не работают при входе в систему

флаг at

Недавно установленный hirsute = 21.04. Установил из пакета, создал свою личную учетную запись, .bashrc по умолчанию присутствует в моем домашнем каталоге и, чтобы убедиться, что также есть .bash_aliases. Оба упоминают псевдоним ll='ls -alF' по-прежнему этот псевдоним недоступен после входа в систему. Это ошибка или я что-то упускаю?

ИМЯ="Убунту"
ВЕРСИЯ = "21.04 (Волосатый Бегемот)"

карел@шал:~$ pwd ; ls -al .bash*
/дом/карел
-rwxr-xr-x 1 karel users 53 сен 26 06:22 .bash_aliases
-rw------- 1 karel users 9834 26 сен 06:23 .bash_history
-rw-r--r-- 1 karel users 3771 31 августа 23:17 .bashrc
karel@schal:~$ cat .bash_aliases
псевдоним ll='ls -alF'
псевдоним la='ls -A'
псевдоним l='ls -CF'
карел@шал:~$ ll
ll: команда не найдена

отредактировано после не очень дружественного комментария, чтобы добавить:

карел@виске:~$ ssh карел@192.168.0.210
[email protected] пароль: 
Добро пожаловать в Ubuntu 21.04 (GNU/Linux 5.11.0-34-общий 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:~$ псевдоним
карел@шал:~$ /bin/bash
karel@schal:~$ псевдоним
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && эхо-терминал || эхо-ошибка)" "$(история|хвост -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
Вам нужно [включить/использовать его из вашего `.bashrc`](https://askubuntu.com/a/5278/349837). Запустите `alias`, чтобы получить список всех доступных псевдонимов.
Karel Adams avatar
флаг at
Спасибо, Пабло. Но это было проверено, и это нормально только для «ванильной» установки по умолчанию. Что касается команды «псевдоним», она возвращает нулевой результат.
sudodus avatar
флаг jp
Работает ли [временно] добавление псевдонима непосредственно в командную строку, например, `alias rm='rm -i'`? Работает ли [постоянно] добавление псевдонима в `~/.bashrc` при следующем открытии окна терминала или текстового экрана с помощью `bash`?
Karel Adams avatar
флаг at
Добавление псевдонима из командной строки работает, да. Но все, что я настраиваю на .bashrc или .bash_aliases, не имеет никакого эффекта. Я начинаю сомневаться, выполняется ли вообще .bashrc. Проверил /var/log/syslog, но не нашел ничего подходящего.
sudodus avatar
флаг jp
Кажется, вы используете какую-то другую программу-оболочку? Что произойдет, если вы запустите `bash` явно с помощью командной строки `bash`?
sudodus avatar
флаг jp
Вы изменили какие-либо команды или файлы конфигурации, которые могут остановить выполнение `~/.bashrc`? Или возможно, что кто-то другой настроил систему, чтобы это произошло?
terdon avatar
флаг cn
Пожалуйста, [отредактируйте] ваши вопросы и i) расскажите нам, что произойдет, если вы добавите определение псевдонима в ваш `~/.bashrc` и _не_ нестандартный `~/.bash_aliases`. Это работает? ii) покажите нам вывод `echo $SHELL` и `ps aux -p $$`, чтобы мы могли видеть, какую оболочку вы используете. iii) Уточните, как вы входите в систему. Это локальная система или удаленная? Вы входите в систему через графический интерфейс или, возможно, по ssh? Наконец, не говорите нам, что «это было проверено».Покажите нам фактическую строку из вашего `~/.bashrc`, которая читает файл `~/.bash_aliases`, поскольку это не функция bash, а модификация Ubuntu.
vanadium avatar
флаг cn
Что-то будет не так в вашем `.bashrc`. Проверьте, переместив его (переименовав), а затем скопировав системный файл .bashrc по умолчанию (который действительно настроен на исходный .bash_aliases): cp /etc/skel/.bashrc .
sudodus avatar
флаг jp
Также возможно, что вы используете не bash, а какую-то другую оболочку по умолчанию, например csh, tcsh, zsh. Пожалуйста, проверьте в соответствии с командами в комментарии terdon.
Karel Adams avatar
флаг at
@vanadium: я изучал это, но безрезультатно. ```diff .\.bashrc /etc/skel/.bashrc``` дал нулевой результат.
terdon avatar
флаг cn
Я предполагаю, что вы имеете в виду мой комментарий, когда говорите «не очень дружелюбный комментарий». Если что, извините! Я не хотел показаться резким. Если так получилось, то я, должно быть, плохо выразился. Мои извинения. Что бы это ни стоило, я также проголосовал за ваш вопрос со вчерашнего дня.
Рейтинг:3
флаг cn

При входе в систему через ssh вы запускаете то, что известно как интерактивная оболочка входа, а не интерактивная оболочка без входа в систему что происходит, когда вы открываете терминал после входа в систему. Оболочки входа в систему не читают ~/.bashrc и вместо этого читать ~/.профиль, ~/.bash_profile и ~/.bash_логин. Вот почему ваши псевдонимы отсутствуют. Для получения дополнительной информации об этом и различиях между файлами инициализации различных типов оболочки см. Почему скрипты в /etc/profile.d/ игнорируются (псевдонимы bash для всей системы)?. Вот почему вы получаете свои псевдонимы, когда запускаете /бин/баш так как это запускает оболочку без входа в систему и будет читать ~/.bashrc.

Тем не менее, Ubuntu по умолчанию ~/.профиль файл включает в себя эти строки:

# включить .bashrc, если он существует
если [-f "$HOME/.bashrc"]; тогда
. "$HOME/.bashrc"
фи

Так что на самом деле он должен читать ваш ~/.bashrc также. Если этого не происходит, я подозреваю одно из следующего:

  1. Вы (или кто-то) создали ~/.bash_profile файл. Это вызвало бы ~/.профиль файл для игнорирования. Как поясняется в человек (выделено мной):

    Когда bash вызывается как интерактивная оболочка входа или как неинтерактивная оболочка с опцией --login, она сначала читает и выполняет команды из файла /etc/profile, если этот файл существует. Прочитав это файл, он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке, а также читает и выполняет com… mans от первого существующего и читаемого. Опцию --noprofile можно использовать, когда оболочка начал подавлять это поведение.

    Итак, если либо ~/.bash_profile или же ~/.bash_логин существует, то что-нибудь в ~/.профиль игнорируется.

  2. Вы (или кто-то другой) создали свой собственный ~/.профиль который не является источником ~/.bashrc.

  3. Вы на самом деле не работаете бить. Вы можете проверить это, запустив пс -р $$ | хвост -n1 | awk '{напечатать $NF}' в оболочке, где у вас нет псевдонимов. Если вывод не бить, вы используете другую оболочку. Возможно, вы установили оболочку входа по умолчанию на ш, который бросаться на Убунту. Вы можете проверить текущее значение с помощью эхо $SHELL и вы можете изменить его с помощью чш.


Основываясь на вашем последнем редактировании, кажется, что ваш случай:

  1. У вас нет ~/.профиль по какой-то причине. И, судя по вашему последнему редактированию, это так. Так что просто скопируйте значение по умолчанию .профиль от /etc/skel и вы должны быть в порядке в следующий раз, когда вы войдете в систему:

    cp /etc/skel/.profile ~/
    
Рейтинг:1
флаг at

@terdon был прав: по той или иной причине в моем домашнем каталоге не было .profile. Все было в порядке после того, как - как предполагалось - cp /etc/skel/.profile ~

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.