我在linux下得环境配置文件~/.bashrc中定义(alias)了一个别名,能在命令行下使用

但是在shell脚本中使用时却提示command not find,请问这是为什么啊

第1个回答  2012-08-06
你应该是空格的问题吧,比如alias ls="ls -l"这就必须得加引号,比如alias vi=vim就不需要引号
第2个回答  2012-08-05
看看你命令打对没有,注意空格
给你个例子吧。比如我把启动x 就直接改为go
alias go='startx'
第3个回答  2012-08-05
如果你非要这样 建议你直接在脚本中定义别名 因为环境变量不同,外部定义的别名估计在脚本里是用不了的。
第4个回答  2018-04-11

这个问题有三个可能原因导致。

    忘记source。

    如果写了后,这段脚本没有在.bashrc里或者.cshrc里面,是不会跟着新开的terminal自动加载的。所以这时候需要手动source一下。

    即便写在了.bashrc或者.cshrc里面,当前terminal终端程序也不会立即生效,需要新开一个terminal终端,才会重新加载source文件,或者你手动在当前终端里source一次。

    alias命令里忘记带空格了。

    比如写个alias

    alias cadhome 'cd/home/PC/cad/'

    忘了带空格,就把cd后面的路径识别为整体命令的部分了,某个粗心的低级错误。所以才提示没有找到命令。

    windows下写的脚本,在linux下无法正常运行。

    因为windows下换行是\r\n,而这个\r是隐形的字符。所以你查看alias也看不到,但是实际上执行的命令是原有的命令后面莫名其妙加了一个\r,所以提示找不到命令,这样写cd命令也会提示找不到目录,因为莫名其妙有个\r在后面。。。

这个比较好检查,vim下面输入:set ff 

返回的是dos,就代表换行是用\r\n的方式,再手动敲一次 :set ff=unix ,强制转换成unix格式,再保存即可!

第5个回答  2012-08-05
还需要重载一下哦,不知道你忘记没。
source ~/.bashrc
还有楼上的答案也是可能的,Linux下命令对于空格还是有讲究的。本回答被提问者和网友采纳
相似回答