Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 695213
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T02:56:10+00:00 2026-05-14T02:56:10+00:00

I can’t get expand_aliases to take effect in bash. I’ve tried a lot of

  • 0

I can’t get expand_aliases to take effect in bash. I’ve tried a lot of different things, and nothing works.

Here’s the simple test case:

/bin/bash -c 'shopt -s expand_aliases; alias cdtmp="cd /tmp"; alias; cdtmp; pwd;'

And the output:

$ /bin/bash -c 'shopt -s expand_aliases; alias cdtmp="cd /tmp"; alias; cdtmp; pwd;'
alias cdtmp='cd /tmp'
/bin/bash: cdtmp: command not found
/home/user

$ /bin/bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

(Yes, I’m using shopt instead of the -O option to bash, just to prove it’s being done.)

Any ideas?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T02:56:11+00:00Added an answer on May 14, 2026 at 2:56 am

    Aliases aren’t available on the same line or in the same function where they are defined.

    From the Bash man page:

           The rules concerning the definition and use  of  aliases  are  somewhat
           confusing.   Bash  always  reads  at  least  one complete line of input
           before executing any  of  the  commands  on  that  line.   Aliases  are
           expanded  when  a command is read, not when it is executed.  Therefore,
           an alias definition appearing on the same line as another command  does
           not  take  effect  until  the next line of input is read.  The commands
           following the alias definition on that line are not affected by the new
           alias.   This  behavior  is  also an issue when functions are executed.
           Aliases are expanded when a function definition is read, not  when  the
           function  is  executed,  because a function definition is itself a com‐
           pound command.  As a consequence, aliases defined in a function are not
           available  until  after  that function is executed.  To be safe, always
           put alias definitions on a separate line, and do not use alias in  com‐
           pound commands.
    
           For almost every purpose, aliases are superseded by shell functions.
    

    The Bash Reference Manual says

    For almost every purpose, shell functions are preferred over aliases.

    instead of the last sentence above [emphasis mine]. I consider aliases to be a command-line convenience rather than something that should be used in scripts (including those which consist solely of bash -c one-liners).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Can I change the field public virtual ClassOne ClassOne { get; set; } to
Can any one tell, how to get the result of LINQ query contains group
Can we change the default action of the edit selected row button? Here is
I have just tried to save a simple *.rtf file with some websites and
Can MOSS integrate and get user profiles from multiple Active Directory and/or LDAP stores?
Can anyone tell me what i am doing wrong? I am trying to get
I'm trying to convert HTML to plain text. I get many &\#8217; &\#8220; etc.
Can find why i get this error can someone help? package Android.data; public class
Can't get over it, no matter how much I search. I have AlarmManager, where
Can I run VLD extension over IIS or Apache that works over windows? and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.