On Mon, Dec 01, 2008 at 08:40:43AM -0430, Patrick O'Callaghan wrote:
On Mon, 2008-12-01 at 11:27 +0000, Steve wrote:
Unfortunately, exporting aliases is not supported by bash (neither
in
/etc/profile nor ~/.bash_profile) :-(
No ! that's not right ! Of course it is supported. Aliases can be defined anywhere /etc/bashrc, /etc/profile, /etc/profile.d/*, ~/.bashrc, ~/.bash-profile ie: in any of the rc files.
These files are 'eval'ed, so their contents are executed in the context of the current shell.
A simple test shows that aliases are not exported:
[poc@bree:~] alias foo='ls -ld' [poc@bree:~] foo drwxr-xr-x 236 poc poc 20480 2008-12-01 01:07 . [poc@bree:~] bash [poc@bree:~] foo bash: foo: command not found
If I recall correctly, /etc/profile, /etc/profile.d/*, and ~/.bash_profile are only eval'd in an interactive (login) shell. You probably want to place your alias in ~/.bashrc so it will be used in all shells.
Working manually, could also define foo as a function instead of an alias, and then export it:
[pfrields@localhost ~]$ foo() { ls -ld; } [pfrields@localhost ~]$ foo drwxr-xr-x 193 pfrields pfrields 12288 2008-12-01 09:00 . [pfrields@localhost ~]$ export -f foo [pfrields@localhost ~]$ bash [pfrields@localhost ~]$ foo drwxr-xr-x 193 pfrields pfrields 12288 2008-12-01 09:00 . [pfrields@localhost ~]$ exit