Почему установка псевдонима перезаписывает исполняемую ссылку?

Почему установка псевдонима перезаписывает исполняемую ссылку?

Мне интересно, почему добавление записи .bashrcприводит к перезаписи ссылки? Например, на тестовой машине я установил Java с , apt-get install openjdk-7-jreа затем поигрался с .bashrcдобавлением alias java="echo Java!". Когда я запустил javaиз bash, я обнаружил, что Java!вместо запуска java, расположенной в , он вывел echo /usr/bin/java. Я также обнаружил, что это происходит с ps, shи screen. Так почему же это происходит?

решение1

Потому что так работает Bash. Это есть в руководстве: псевдонимы имеют более высокий приоритет при попытке сопоставить ввод с командой.

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

alias java="\java -Xmx=1G"

Вышеуказанный псевдоним увеличивает максимальный объем памяти по умолчанию, доступный для процесса Java, с 256 МБ до 1 ГБ. Однако единственный способ, которым это может иметь какой-либо полезный эффект, — это если при вводе java, он запускает псевдоним, а не команду.

Связанный контент