Я выполнил следующую команду для создания файла псевдонима в CentOS 7.9:
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/alias-ll.sh
Затем, как только я перезапустил оболочку, "type ll" указал, что этот псевдоним не работает. Я подумал, что это могло произойти из-за того, что другой файл в /etc/profile.d перезаписал псевдоним, поэтому я переименовал файл в "z-alias-ll.sh". Затем я перезапустил оболочку, и на этот раз "type ll" указал, что псевдоним успешно сработал.
Однако когда я делаю то же самое в Ubuntu 20.04, "type ll" указывает, что это не работает. В /etc/profile.d в Ubuntu были некоторые имена файлов, такие как "Z99-cloud-locale-test.sh" и "Z99-cloudinit-warnings.sh", поэтому я попробовал эти:
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99Zalias-ll.sh
Однако при перезапуске терминала «type ll» по-прежнему выдает сообщение «ll is alias to `ls -alF'».
Если я создам еще один файл псевдонима:
echo 'alias lltest="ls -alhF --color=auto"' > /etc/profile.d/alias-lltest.sh
Затем после перезапуска терминала "type lltest" указывает, что этот файл является источником. Поэтому я думаю, что файлы псевдонимов в /etc/profile.d являются источниками, но псевдоним для "ll" перезаписывается где-то.
Поскольку я пробовал префикс "ZZ99" и т. д., я не думаю, что это проблема сортировки строк, как в CentOS 7.9, где мне приходилось добавлять префикс "z-" к имени файла, чтобы другой файл /etc/profile.d не получил приоритет. Однако я не уверен на 100%.
Какой файл, скрипт и т. д. может иметь приоритет над файлами псевдонимов, которые я создал в /etc/profile.d? Что имеет приоритет над /etc/profile.d в Ubuntu с точки зрения определения переменных среды?
Я пробовал и на Ubuntu 20.04, и на Ubuntu 22.10, используя свежие капли Digital Ocean.
решение1
Обычно пользовательские настройки имеют приоритет над системными настройками. Это также справедливо для псевдонимов. Пользовательские псевдонимы имеют приоритет над псевдонимами, определенными на системном уровне. По умолчанию в Ubuntu alias ll='ls -alF'
определяется в файле пользователя .bashrc
, тем самым переопределяя любой псевдоним, который вы могли задать в другом месте.