【发布时间】:2018-10-15 20:44:40
【问题描述】:
我已经定义了这样的别名:
alias X="path/to/program"
我有一个这样定义的函数:
doX() { X -flag "$1"; }
我将这些放在我的 .bashrc 文件中,当我打开 bash 时,我在意外标记“-flag”附近收到语法错误。此时,已设置别名,但由于此错误,尚未设置函数。如果我跑
doX() { X -flag "$1"; }
此时,它起作用了。在 .bashrc 文件中设置别名后,我尝试将其放入文件并获取它,但它给了我相同的结果。
我该如何解决这个问题?有没有办法在 .bashrc 中定义别名和函数,以便在我打开 bash 时同时设置它们?
【问题讨论】:
-
您是否有理由不只是设置路径而不是使用别名?
-
我想做类似 (cd Desktop; path/to/program) 之类的事情,但我不确定是否可以在路径中执行此操作
-
你可以在一个函数中做到这一点;您不能在别名中可靠地执行此操作(当您告诉它
foo bar并尝试运行(cd Desktop; path/to/program) bar而不是(cd Desktop; path/to/program bar)时,alias foo='(cd Desktop; path/to/program)'将表现不佳)。您可以在函数中通过将"$@"传递到(仅)应替换参数的确切位置(顺便说一句,始终使用&&,而不是;,在cd之后,这样你就不用'如果程序失败,请不要在错误的目录中运行您的程序)。