如何在 .bashrc 中定义变量,以便我可以将其用作路径

Yol*_*Wex 2 command-line customization alias bashrc

嗨(抱歉我的英语不好)

我刚刚学习了如何使用别名永久设置特定值的键:

.bashrc

alias please='sudo'
alias go='cd'
alias destroy='rm -rf'
Run Code Online (Sandbox Code Playgroud)

它工作得很好。但后来我想,如果我可以将我最喜欢的路径(如 ~/Music)存储在 .bashrc 中以便于使用,那该多有趣。所以我这样做了:

alias please='sudo'
alias go='cd'
alias destroy='rm -rf'

alias home='~'
alias work='~/Workstation'
alias back='..'
Run Code Online (Sandbox Code Playgroud)

但它没有用。我也尝试定义这样的变量: back='..' 但它也不起作用。

我知道我可以这样做, alias gowork='cd ~/Workstation'
但我希望能够使用我存储在许多不同命令中的路径,如下所示:

destroy work

我希望能够做这样的事情:

go back/Pictures

任何帮助将不胜感激,谢谢你们!

van*_*ium 8

“别名”是 shell 命令的缩写。您的定义alias home='~'不起作用,因为它没有指定有效的命令:

\n
~$ ~\nbash: /home/vanadium: Is a directory\n
Run Code Online (Sandbox Code Playgroud)\n

因此,这种方法不适合让您用可在命令中使用的较短名称替换完整路径名。

\n

一种方法是定义变量。可能不需要为您的主目录和以前的文件夹定义快捷方式:内置缩写~..分别尽可能短:我建议您采用这些。

\n

对于其他路径,您可以定义环境变量,与别名类似,可以通过将它们包含在中来使其永久化.bashrc

\n
export work=~/Workstation\n
Run Code Online (Sandbox Code Playgroud)\n

然后可以在命令中使用

\n
cd $work\n
Run Code Online (Sandbox Code Playgroud)\n

它将与您的其他别名一起使用,例如

\n
destroy $work\n
Run Code Online (Sandbox Code Playgroud)\n

如果处理带空格的路径名,请注意

\n

\xe2\x80\xa2 如果变量中定义的路径名包含空格,则需要引用该变量,如下所示

\n
cd "$work"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 如果定义带有空格的变量,则需要保留由 bash 扩展的符号,例如~,不加引号,如下所示

\n
export work=~"/Pathname with spaces"\n
Run Code Online (Sandbox Code Playgroud)\n