在脚本中source ~/.bashrc不可用?

系统安装、升级讨论
xinqijisuper
帖子: 87
注册时间: 2012-09-23 14:48
系统: 10.04 and 12.04
送出感谢: 7 次
接收感谢: 0

在脚本中source ~/.bashrc不可用?

#1

帖子 xinqijisuper » 2013-02-01 16:37

#! /bin/bash
shopt -s expand_aliases
source /home/beizhou/.bashrc
alias
ds9

而我把 source /home/beizhou/.bashrc 改成source 其他文件则可以
这是怎么个情况? 难道要修改什么配置才可以在脚本中source .bashrc中的配置么?
xinqijisuper
帖子: 87
注册时间: 2012-09-23 14:48
系统: 10.04 and 12.04
送出感谢: 7 次
接收感谢: 0

Re: 在脚本中source ~/.bashrc不可用?

#2

帖子 xinqijisuper » 2013-02-01 20:46

没人知道么?
头像
枫叶饭团
论坛版主
帖子: 14684
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
送出感谢: 1 次
接收感谢: 132 次
联系:

Re: 在脚本中source ~/.bashrc不可用?

#3

帖子 枫叶饭团 » 2013-02-01 20:55

你source干什么
xinqijisuper
帖子: 87
注册时间: 2012-09-23 14:48
系统: 10.04 and 12.04
送出感谢: 7 次
接收感谢: 0

Re: 在脚本中source ~/.bashrc不可用?

#4

帖子 xinqijisuper » 2013-02-02 1:35

枫叶饭团 写了:你source干什么
我就是想在shell脚本中使用.bashrc中定义的别名啊。 网上搜说是在脚本中source下并且把shopt中的extend_aliases去掉就行了。 但是这样做了之后还是不行,不过source别的文件中的别名倒可以,所以我认为是不是哪儿有默认设置脚本中不能source .bashrc 中的别名??
ruandao
帖子: 177
注册时间: 2009-08-29 10:57
送出感谢: 16 次
接收感谢: 3 次

Re: 在脚本中source ~/.bashrc不可用?

#5

帖子 ruandao » 2013-02-02 2:47

贴出运行信息

是不是你那个文件删掉了。。。
还活着
xinqijisuper
帖子: 87
注册时间: 2012-09-23 14:48
系统: 10.04 and 12.04
送出感谢: 7 次
接收感谢: 0

Re: 在脚本中source ~/.bashrc不可用?

#6

帖子 xinqijisuper » 2013-02-02 22:19

ruandao 写了:贴出运行信息

是不是你那个文件删掉了。。。
脚本是这样的。
#! /bin/bash
shopt -s expand_aliases
source /home/beizhou/.bashrc
alias
第二行是允许shell脚本里使用别名。 第三行是加载bashrc里面的东西,bashrc里面有很多别名,然后alias就是要显示现有的别名,然后运行后什么也没有说明bashrc里面的别名没有加载进来。。
jinjiachen
帖子: 2095
注册时间: 2012-12-16 15:43
系统: debian
送出感谢: 9 次
接收感谢: 27 次

Re: 在脚本中source ~/.bashrc不可用?

#7

帖子 jinjiachen » 2013-02-02 22:27

不清楚你的目的是什么,如果你想定义一些别名可以直接写在.bashrc中啊,你是想干什么? :em06
xinqijisuper
帖子: 87
注册时间: 2012-09-23 14:48
系统: 10.04 and 12.04
送出感谢: 7 次
接收感谢: 0

Re: 在脚本中source ~/.bashrc不可用?

#8

帖子 xinqijisuper » 2013-02-02 23:38

jinjiachen 写了:不清楚你的目的是什么,如果你想定义一些别名可以直接写在.bashrc中啊,你是想干什么? :em06
我已经把别名写在.bashrc中了啊
我就是想从我写的那个脚本中用source调用.bashrc中的别名,但是调不过来啊
ruandao
帖子: 177
注册时间: 2009-08-29 10:57
送出感谢: 16 次
接收感谢: 3 次

Re: 在脚本中source ~/.bashrc不可用?

#9

帖子 ruandao » 2013-02-03 4:10

xinqijisuper 写了:
ruandao 写了:贴出运行信息

是不是你那个文件删掉了。。。
脚本是这样的。
#! /bin/bash
shopt -s expand_aliases
source /home/beizhou/.bashrc
alias
第二行是允许shell脚本里使用别名。 第三行是加载bashrc里面的东西,bashrc里面有很多别名,然后alias就是要显示现有的别名,然后运行后什么也没有说明bashrc里面的别名没有加载进来。。

sir 你脚本内容,已经在第一贴子有了,你可以截屏下贴出你运行的信息
还活着
xinqijisuper
帖子: 87
注册时间: 2012-09-23 14:48
系统: 10.04 and 12.04
送出感谢: 7 次
接收感谢: 0

Re: 在脚本中source ~/.bashrc不可用?

#10

帖子 xinqijisuper » 2013-02-03 9:11

ruandao 写了:
xinqijisuper 写了:
ruandao 写了:贴出运行信息

是不是你那个文件删掉了。。。
脚本是这样的。
#! /bin/bash
shopt -s expand_aliases
source /home/beizhou/.bashrc
alias
第二行是允许shell脚本里使用别名。 第三行是加载bashrc里面的东西,bashrc里面有很多别名,然后alias就是要显示现有的别名,然后运行后什么也没有说明bashrc里面的别名没有加载进来。。

sir 你脚本内容,已经在第一贴子有了,你可以截屏下贴出你运行的信息
就是运行结果为空。。如果加载进来那些别名就肯定输出alias=''之类的N行结果。
xinqijisuper
帖子: 87
注册时间: 2012-09-23 14:48
系统: 10.04 and 12.04
送出感谢: 7 次
接收感谢: 0

Re: 在脚本中source ~/.bashrc不可用?

#11

帖子 xinqijisuper » 2013-02-04 9:03

都搞不定?
ruandao
帖子: 177
注册时间: 2009-08-29 10:57
送出感谢: 16 次
接收感谢: 3 次

Re: 在脚本中source ~/.bashrc不可用?

#12

帖子 ruandao » 2013-02-04 10:43

xinqijisuper 写了:都搞不定?
你这个超出了我的认知,难道.bashrc是不可读的?
要不然

代码: 全选

bash xxx 
可以,

代码: 全选

bash .bashrc
不可以,没见过
还活着
头像
royclark
帖子: 301
注册时间: 2011-05-15 1:01
系统: Debian GNU/Linux sid
送出感谢: 0
接收感谢: 14 次

Re: 在脚本中source ~/.bashrc不可用?

#13

帖子 royclark » 2013-02-04 11:34

楼主你的 .bashrc 长什么样的?
我怀疑与 .bashrc 中

代码: 全选

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
有关,在脚本里 PS1 没有设置。按你的脚本运行确实不出 alias 的信息,不过在最开始处加一行 PS1=blabla 就可以了。
这些用户感谢了作者 royclark 于这个帖子:
xinqijisuper (2013-02-05 19:36)
评价: 3.7%
libreoffice3writer
帖子: 128
注册时间: 2012-12-20 15:39
系统: Debian sid
送出感谢: 0
接收感谢: 4 次

Re: 在脚本中source ~/.bashrc不可用?

#14

帖子 libreoffice3writer » 2013-02-04 12:24

alias是shell中的built-in command, 所以找不能它的man手册, 可以用man bash命令查看bash的介绍, 然后在里面查找alias的相关介绍.
alias默认只在交互式shell中被展开;
如果想要shell脚本中使用aias的话, 需要用shopt命令来修改shell选项. 楼主已经说清楚了.

现在楼主要做我, 我认为是确认你的~/.bashrc是否已经被正确载入, 可以测试一下.
比如在你的~/.bashrc文件的尾部定义一个变量, 比如

代码: 全选

age=8
然后再你的foo.sh这个脚本文件里, 检查这个变量是否被定义了:

代码: 全选

 echo $age
把上面的代码加入到foo.sh的尾部, 看一下, 如果打印不出8. 说明你的~/.bashrc文件没有被解析.
楼主最好能贴出你的~/.bashrc文件, 这样更容易定位问题.
xinqijisuper
帖子: 87
注册时间: 2012-09-23 14:48
系统: 10.04 and 12.04
送出感谢: 7 次
接收感谢: 0

Re: 在脚本中source ~/.bashrc不可用?

#15

帖子 xinqijisuper » 2013-02-05 19:37

royclark 写了:楼主你的 .bashrc 长什么样的?
我怀疑与 .bashrc 中

代码: 全选

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
有关,在脚本里 PS1 没有设置。按你的脚本运行确实不出 alias 的信息,不过在最开始处加一行 PS1=blabla 就可以了。

谢谢啊!把那句话注释掉就可以调用了!!
另外,请问[ -z "$PS1" ] && return 这句话什么意思??
谢谢
回复

回到 “系统安装和升级”