This is probably a very simple thing but I can’t find an answer, possibly because I don’t know what terms to use in search.

How do I use an alias of a path with mv or cp? Or even cd?

In /etc/bash.bashrc I have: alias docs=‘/media/docs

cd docs Gives “No such file or directory”

Yet: docs Gives “Is directory”

With alias docs=‘cd /media/docs’ and by typing docs I get into the directory. Obviously I can’t use that alias with mv or cp though.

Maybe this isn’t even an intended use of alias but still. Why doesn’t it work?

  • davel@lemmy.ml
    link
    fedilink
    English
    arrow-up
    29
    ·
    19 hours ago

    alias is for aliasing commands. If you want to “alias“ arguments, use shell/environment variables.

    $ docs=/media/docs
    $ cd $docs
    
    • teawrecks@sopuli.xyz
      link
      fedilink
      arrow-up
      7
      ·
      16 hours ago

      It is worth acknowledging that this probably seems unintuitive to a new user. Makes it look like the shell has two different aliasing systems.

      It makes sense the more familiar you are with bash, though. If you ever tried to cd /some/other/path-with-docs/in/the/string you’d end up accidentally running cd /some/other/path-with-/media/docs/in/the/string.

      Which would be confusing at best, or a security issue at worst. Better to see that $ in the cmd and know you’re injecting a var’s value.