Ric*_*uhr 52 bash terminal alias
如何找出系统中定义别名的位置?我指的是从Mac OS X(10.6.3)启动的终端会话中使用的别名.
例如,如果我alias在终端命令提示符下输入没有参数的命令,我会得到一个我设置的别名列表,例如:
alias mysql='/usr/local/mysql/bin/mysql'
Run Code Online (Sandbox Code Playgroud)
但是,我使用Spotlight和mdfind各种启动文件搜索了我的系统,到目前为止还找不到定义此别名的位置.(我很久以前就这样做了,并没有写下我指定别名的地方).
cwe*_*kly 46
对于OSX来说,这个两步序列对我来说很有用,可以找到我很久以前创建的别名,并且找不到预期的位置(〜/ .zshrc).
cweekly:~ $ which la
la: aliased to ls -lAh
cweekly:~$ grep -r ' ls -lAh' ~
/Users/cweekly//.oh-my-zsh/lib/aliases.zsh:alias la='ls -lAh'
Run Code Online (Sandbox Code Playgroud)
啊哈!"隐藏" ~/.oh-my-zsh/lib/aliases.zsh.我曾经在.oh-my-zsh中捅了一下但忽略了lib/aliases.zsh.
gho*_*g74 30
您只需在alias命令提示符下输入以查看您拥有的别名即可.否则,您可以find在定义别名的最常见位置执行操作,例如
grep -RHi "alias" /etc /root
Run Code Online (Sandbox Code Playgroud)
jas*_*ard 23
functions
Run Code Online (Sandbox Code Playgroud)
alias
Run Code Online (Sandbox Code Playgroud)
bash -ixlc : 2>&1 | grep thingToSearchHere
Run Code Online (Sandbox Code Playgroud)
zsh -ixc : 2>&1 | grep thingToSearchHere
Run Code Online (Sandbox Code Playgroud)
-i Force shell to be interactive.
-c Take the first argument as a command to execute
-x -- equivalent to --xtrace
-l Make bash act as if invoked as a login shell
Run Code Online (Sandbox Code Playgroud)
six*_*ude 15
此外,这些是标准的bash配置文件
更多信息:http://www.heimhardt.com/htdocs/bashrcs.html
派对有点晚了,但我遇到了同样的问题(试图找到"l."命令在RHEL6中别名的位置),并最终出现在之前答案中未提及的位置.它可能在所有bash实现中都找不到,但如果/etc/profile.d/目录存在,请尝试在那里使用不明原因的别名.那是我发现的地方:
[user@server ~]$ grep l\\. /etc/profile.d/*
/etc/profile.d/colorls.csh:alias l. 'ls -d .*'
/etc/profile.d/colorls.csh:alias l. 'ls -d .* --color=auto'
/etc/profile.d/colorls.sh: alias l.='ls -d .*' 2>/dev/null
/etc/profile.d/colorls.sh:alias l.='ls -d .* --color=auto' 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
bash联机帮助页中未提及该目录,并且它不是bash搜索概要文件/启动信息的正确部分,但在RHEL的情况下,您可以在/ etc/profile中看到调用代码:
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
Run Code Online (Sandbox Code Playgroud)