Во-первых, псевдонимы временный и действительный только для текущей оболочки. Когда вы запускаете псевдоним.sh
файл, он выполняется в собственной скорлупе, а не в оболочке, из которой он был запущен. Итак, исходники скрипта ~/.bash_aliases
(почему этот файл, а не /etc/.bash_aliases
? Я думал, вы хотите последнего?), но как только сценарий завершается, оболочка также завершает работу, и все псевдонимы, которые могли быть определены в ~/.bash_aliases
файл, они исчезли.
В этом разница между Бег сценарий оболочки и источник Это. Если вы запускаете сценарий оболочки, он запускается в своей собственной оболочке, поэтому любые изменения среды, псевдонимов и тому подобное, сделанные в сценарии, не влияют на родительскую оболочку (оболочку, из которой был запущен сценарий). Но когда вы используете тот же скрипт, он выполняется в текущей оболочке, поэтому все изменения, которые он делает, остаются после завершения сценария (конечно, они остаются до тех пор, пока существует оболочка - если вы выйдете из оболочки, все изменения снова исчезнут).
Принимая это во внимание, если вы хотите, чтобы псевдонимы из файла /etc/.bash_aliases
быть доступным для любой пользователь в любая оболочка, которую они запускают, файл должен быть получен из /etc/bash.bashrc
файл. Этот файл выполняется всякий раз, когда запускается любая оболочка (от любого пользователя), и обычно используется для установки начальной среды.
Итак, если вы добавите следующую строку в конце /etc/bash.bashrc
(конечно, вы должны сделать это как root, чтобы иметь возможность редактировать файл):
источник /etc/.bash_aliases
вы должны получить то, что хотите.
псевдоним.sh
файл вообще не нужен.