Wes*_*cts 9 bash alias bash-alias
我的最后一行.bash_profile
是:
alias cp=/usr/local/bin/gcp
Run Code Online (Sandbox Code Playgroud)
但是,这被 my 中的条目压扁了$PATH
:
$which cp
/bin/cp
11:54:32/OCspark $type cp
cp is aliased to `/usr/local/bin/gcp'
Run Code Online (Sandbox Code Playgroud)
我原以为别名会覆盖PATH
.. ?
AFH*_*AFH 21
该which
命令只返回可执行文件:它对别名一无所知,因为它是一个外部程序,并且没有将别名信息传递给子进程的机制。
如果您输入命令,type -a cp
您将看到所有可能的解释,按优先顺序排列。这包括任何别名,因为它type
是一个bash
内部命令。
重要的是要意识到别名不会被子进程解释,例如脚本或具有运行系统命令选项的交互式编辑器。
如果您创建cp
一个函数,那么您的版本将在脚本中运行,但不会在其他程序中运行:
cp() { /usr/local/bin/gcp "$@"; }
Run Code Online (Sandbox Code Playgroud)
如果您希望在cp
任何地方工作,请$HOME/bin
在PATH
列表的开头添加并指向$HOME/bin/cp
它:
ln -s /usr/local/bin/gcp $HOME/bin/cp
Run Code Online (Sandbox Code Playgroud)
这将创建一个符号链接,尽管您可以将其设置为更高效的硬链接(省略-s
),但这通常需要 root 权限(sudo ln ...
)。创建函数并添加到PATH
变量将在bash
具有用户权限的启动脚本之一中完成。
8bi*_*ree 14
别名是 shell 内部的。其他程序不会知道它们。
which
不是 Bash 内置函数(它是其他一些 shell 中的内置函数,例如 zsh)。由于which
在 Bash 的别名中没有特权信息,which
只需查看PATH
给定的术语。
type
,另一方面是Bash 内置,因此它可以报告别名。
归档时间: |
|
查看次数: |
3366 次 |
最近记录: |