DELL E5400 电脑安装 Ubuntu 12.10 ,但是不能识别无线网卡,在这个时候,查看默认的驱动,默认使用的驱动存在问题。
执行
|
1 |
sudo apt-get install b43-fwcutter firmware-b43-installer |
命令,然后重启机器,保证最后的结果为下图所示就可以了。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
转自 http://imcn.me/html/y2012/11199.html
今天有童鞋在 Ubuntu QQ群中请教如果为火狐浏览器安装 flashplayer 插件问题,其实这个很简单,此教程以ubuntu 12.04 为列,其实Ubuntu 10.04 之后的版本都可以按照这样的方式安装,因为在ubuntu 软件中没有Flash plugin,那么我么需要手动添加源,去adobe官方网站就可以,使用方便,打开网站:http://get.adobe.com/cn/flashplayer/
然后如图选择“APT,适用于ubuntu 10.04 +”意思就是ubuntu10.04以上版本,再点击“立即下载”按钮。
之后弹出下面的窗口,点击“OK”就行了
软件中心会为你自动添加源地址并更新,所以你不用管,知道出现下面的的窗口,窗口被你点没有了,没关系,现在你可以在软件中心直接搜索插件了,然后点击“”install”安装就可以了,安装完毕之后别忘了重新启动火狐浏览器!
最近在使用Eclipse的SVN插件时总是弹出一个大大的对话框,报一个Failed to load JavaHL Library.错误
虽然不是很影响正常使用,但是当你编着编着代码就偶尔弹出这么个大框来着实不爽。
于是在网络上找了答案,按照其中一种方法操作,果然不再报错。
其法为:
1.windows->preferences->Team->SVN->SVN接口
2.选择SVNKit (Pure Java) xxxxxx
如下图所示

最近从Ubuntu 12.04 升级到了 12.10,发现以前在Eclipse下面的SVN Subclipse 插件不能正常运行了。看了看原因,发现系统自带的SVN从1.6X升级到1.7X 了,当年哥在12.04下面折腾了半天,也没能方便升级到1.7X 啊,想不到,想不到。
去Subclipse官网看了下,似乎这个插件N久未曾更新,至少是人气不旺盛啊。于是想更换 成Eclipse自带的subversion,没想到卸载了所有的名字与subversion 相关的东西之后,竟然在Team菜单 中仍然存在快捷方式,另外就是装完subversion 以后在Window->Preferences->Team下面竟然有两个SVN ,明显是Subclipse 没有卸载干净。
找了半天,终于找到一个叫 CollabNet Merge Client 的东东,看名字,没有任何关系与 Subclipse,不过他的简介里面暴露了他,原来这个东东就算与Eclipse菜单对应的东东,吧这个卸载就可以了。
感觉是Eclipse自带的subversion 好些,当时是不知道怎么安装这个,才安装的Subclipse。这个安装完成后会提示安装相应的SVNkit 等等的依赖库,比较方便安装和使用。呵呵,强烈推荐这个。
安装方法:
当下图出现的时候,强烈建议选择SVNkit,请注意 SVNKit 1.3.8 对应的SVN 是 1.6X 的版本,SVNKit 1.7.X 是对应的SVN 1.7X的版本,JavaHL似乎跟不上Java的更新步伐,问题比较多,不推荐。

首先先介绍一下什么叫PPA
PPA,表示 Personal Package Archives,也就是个人软件包集。
有 很多软件因为种种原因,不能进入官方的 Ubuntu 软件仓库。 为了方便 Ubuntu 用户使用,launchpad.net 提供了 ppa,允许用户建立自己的软件仓库, 自由的上传软件。PPA 也被用来对一些打算进入 Ubuntu 官方仓库的软件,或者某些软件的新版本进行测试。
在ubuntu系统中,和OpenJDK比起来,如果你更偏爱Oracle JDK(前 Sun JDK),我推荐一种很简便的方法给你。通过一个PPA仓库,你可以很容易的进行安装Oracle JDK(包括JRE)并始终保持最新的版本。
Oracle JDK7本身并不存在于该PPA中,这是因为新的Java授权许可证并不允许这么做(这也是Oracle JDK7从ubuntu官方软件仓库中移除的原因)。PPA中的软件程序自动从Oracle官方网站下载Oracle Java JDK7并把它安装到你的电脑中,就像flashplugin-installer软件包那样。
需要注意的是,该软件包当前还是alpha 版本,可能在有些情况下不能正常工作!该软件包支持代理,但是如果你的ISP或者路由器封禁了一些非标准端口,这可能导致安装失败,这是由于Oracle 在Java7二进制安装包的下载链接中使用了许多重定向!如果因此而导致下载失败,亦或你的电脑在防火墙保护之下,你就需要手动安装 Oracle Java 7了。
安装Oracle Java 7
该软件包提供安装Oracle Java JDK 7 (包括 Java JDK, JRE 和 the Java 浏览器插件),如果你只需要安装Oracle JRE,请不要使用该PPA。
运行下述命令,即可完成添加PPA、安装最新版本的Oracle Java 7(支持Ubuntu 12.10,12.04, 11.10, 11.04 and 10.04):
|
1 2 3 |
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer |
安装完成之后,如果你想看看是否真的安装成功了,你只需运行下面的命令:
|
1 |
java -version |
命令输出应该包含和下面类似的内容:
|
1 |
java version "1.7.0_04"Java(TM) SE Runtime Environment (build 1.7.0_04-20)Java HotSpot(TM) Server VM (build 23.0-b21, mixed mode) |
注:版本号中的”_04″部分可能会与你的不同,这是由于该PPA总是安装最新的Oracle Java 7版本。
如果由于一些其它的原因,当前的Java版本不是1.7.0,你可以尝试运行下面的命令:
|
1 |
sudo update-java-alternatives -s java-7-oracle |
卸载 Oracle Java 7
如果你不再想使用Oracle Java (JDK) 7,想回归OpenJDK了,你只需卸载Oracle JDK7 Installer,这样OpenJDK就又变成当前使用的java了:
|
1 |
sudo apt-get remove oracle-java7-installer |
转载自 http://www.cnblogs.com/ainiaa/archive/2011/12/05/2276989.html
可用一些小工具来管理 Ubuntu 的启动选项:
功能更全的工具:sysv-rc-conf
|
1 2 |
sudo apt-get update sudo apt-get install sysv-rc-conf |
运行:
|
1 |
sudo sysv-rc-conf |
也可以直接加入启动程序,例如把 /etc/init.d/red5 加入到系统自动启动列表中:
|
1 |
sudo sysv-rc-conf red5 on |
其他使用方法请自行Google
也可以直接修改
直接改 /etc/rc0.d ~ /etc/rc6.d 和 /etc/rcS.d 下的东西,S开头的表示启动,K开头的表示不启动,
例如:想关闭 Red5 的开机自动启动,只需
|
1 2 |
sudo mv /etc/rc2.d/S20red5 /etc/rc2.d/S20red5 |
就可以了。
Ubuntu自动启动程序
首 先,linux随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件(脚本程序简单的说就是把要运行的程序写 到一个 文件里让系统能够按顺序执行,类似windows下的autorun.dat文件),另外在/etc这个文件夹里还有诸如名为rc1.d, rc2.d一直到rc6.d的文件夹,这些都是linux不同的runlevel,我们一般进入的X windows多用户的运行级别是第5级,也就是rc5.d,在这个文件夹下的脚本文件就是运行第5级时要随机启动的服务程序。需要注意的是,在每个rc (1-6).d文件夹下的文件其实都是/etc/init.d文件夹下的文件的一个软连接(类似windows中的快捷方式),也就是说,在 /etc/init.d文件夹下是全部的服务程序,而每个rc(1-6).d只链接它自己启动需要的相应的服务程序!
要 启动scim (某一程序),我们首先要知道scim程序在哪里,用locate命令可以找到,scim在/usr/bin/scim这里,其中usr表 示是 属于用户的,bin在linux里表示可以执行的程序。这样,我就可以编写一个脚本程序,把它放到/etc/init.d里,然后在rc5.d里做一个相 应的软链接就可以了。
这个脚本其实很简单,就两行:
|
1 2 |
#!/bin/bash /usr/bin/scim |
第一行是声明用什么终端运行这个脚本,第二行就是要运行的命令。
还 需要注意的一点是,在rc5.d里,每个链接的名字都是以S或者K开头的,S开头的表示是系统启动是要随机启动的,K开头的是不随机启动的。这 样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S改成K后,这个服务就不能随机启动了。因此,我这个链接 还要起名为SXXX,这样系统才能让它随机启动。
|
1 |
在RH下,rc.local是默认启动的最后一个脚本文件,所以, |
|
1 |
如果你想要随机启动,还有一种方法就是在rc.local的尾部加入/usr/bin/scim,这样就可以了。 |
Linux 自动启动程序
1.开机启动时自动运行程序
Linux 加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件(该文件通常是系统最后启动的脚本),在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window。
2.登录时自动运行程序
用 户登录时,bash首先自动执行系统管理员建立的全局登录script :/ect/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、 /.profile,但只执行最先找到的一个。
因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。
3.退出登录时自动运行程序
退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout中加入命令“tar -cvzf c.source.tgz *.c”,则在每次退出登录时自动执行 “tar” 命令备份 *.c 文件。
4.定期自动运行程序
Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。
例如,建立文件crondFile,内容为“00 9 23 Jan * HappyBirthday”,运行“crontab cronFile”命令后,每当元月23日上午9:00系统自动执行“HappyBirthday”的程序(“*”表示不管当天是星期几)。
5.定时自动运行程序一次
定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:
|
1 2 3 4 5 6 |
$ at 12:00 at>mailto Roger -s ″Have a lunch″ < plan.txt at>Ctr-D Job 1 at 2000-11-09 12:00 2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。?9 12:00 2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。er。ger。er。 |
摘抄自 http://www.cnblogs.com/ximu/articles/2119136.html ,部分内容已经验证
一、SVN安装
1.安装包
|
1 |
$ sudo apt-get install subversion |
2.添加svn管理用户及subversion组
|
1 2 3 |
$ sudo adduser svnuser $ sudo addgroup subversion $ sudo addgroup svnuser subversion |
3.创建项目目录
|
1 2 3 4 5 6 7 8 9 |
$ sudo mkdir /home/svn $ cd /home/svn $ sudo mkdir fitness //注意这个 fitness指的是工程的名字,可以自己定义 $ sudo chown -R root:subversion fitness $ sudo chmod -R g+rws fitness4.创建SVN文件仓库 $ sudo svnadmin create /home/svn/fitness5.访问方式及项目导入: $ svn co file:///home/svn/fitness #或者 $ svn co file://localhost/home/svn/fitness |
如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
//--
下面的命令用于将项目导入到SVN 文件仓库:
|
1 |
$ svn import -m "New import" /home/svn/fitness file:///home/svnuser/src/fitness |
一定要注明导入信息
6.访问权限设置
修改 /home/svn/fitness目录下:,新版本三个文件在conf目录下面
svnserve.conf 、passwd 、authz三个文件,行最前端不允许有空格,否则会提示错误 svnserve.conf:20: Option expected
//--
编辑svnserve.conf文件,把如下两行取消注释
|
1 2 |
password-db = password authz-db = authz |
然后加上
|
1 2 3 4 |
# [general] anon-access = read auth-access = write password-db = passwd |
其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,但如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。
编辑/home/svnuser/etc/passwd
|
1 2 3 4 |
[users] mirze = 123456 test1 = 123456 test2 = 123456 |
编辑/home/svnuser/etc/authz如下
|
1 2 3 4 5 6 |
[groups] admin = mirze,test1 test = test2 [/] @admin=rw *=r |
这里设置了三个用户mirze,test1,test2密码都是123456
其中mirze和test1属于admin组,有读和写的权限,test2属于test组只有读的权限
7.启动SVN服务
|
1 |
$svnserve -d -r /home/svn |
描述说明:
-d 表示svnserver以“守护”进程模式运行
-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库
如: svn://192.168.12.118/fitness
这时SVN安装就完成了.
局域网访问方式:
例如:
|
1 |
svn checkout svn://192.168.12.118/fitness --username mirze --password 123456 /var/www/fitness |
注意 提交的时候有时会报告 db/txn-current-lock: 权限不够 或者 txn-current-lock : Permission denied 之类的信息,这是因为在创建版本库的时候用的是root权限,所以svn用户就更新不了db/目录下的文件了(因为提交会更新SVN服务器上版本库中的 db/目录)。解决方案就是把db/目录下的文件都修改成svn用户并修改读写权限。操作如下:
切换到svn 的根目录,执行如下命令,貌似只执行第二条就足够了。
|
1 2 |
$sudo chown svn:svn -R db/ $sudo chmod 777 -R db/ |
二、HTTP:// [apache]
1.安装包 [已安装subversion]
|
1 |
$ sudo apt-get install libapache2-svn |
创建版本仓库:
|
1 |
sudo svnadmin create /目录地址 |
目录地址必须存在,这个就是保存版本仓库的地方,不同的版本仓库创建不同的文件夹即可,比如:
|
1 |
$sudo svnadmin create /home/svn/project |
本来/home/svn/project这个目录下什么都没有,执行下面的命令之后再去看一下,多出一些文件和文件夹,我们需要操作的是conf这个文件夹,这个文件夹下有一个文件,叫做passwd,用来存放用户名和密码。
然后把这个版本仓库目录授权给apache读写:
|
1 |
$sudo chown -R www-data:www-data /目录地址 |
然后来到打开apache配置文件:
|
1 |
$sudo gedit /etc/apache2/mods-available/dav_svn.conf |
加入如下内容:
|
1 2 3 4 5 6 7 8 9 10 |
<Location /project> DAV svn SVNPath /home/svn/project AuthType Basic AuthName “myproject subversion repository” AuthUserFile /home/svn/project/conf/passwd #<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user #</LimitExcept> </Location> |
location说的是访问地址,比如上述地址,访问的时候就是
http://127.0.0.1/project
其中有两行被注释掉了,以保证每次都需要用户名密码。
最后一步就是创建访问用户了,建议将用户名密码文件存放在当前版本仓库下conf文件夹下,这样版本仓库多的时候无至于太乱。
因为conf文件夹下已经存在passwd文件了,所以直接添加用户:
|
1 |
$sudo htpasswd -c /home/svn/project/conf/passwd test |
然后输入两遍密码,laoyang这个用户就创建好了。
打开/home/svn/project/conf/passwd这个文件,会开到形如如下形式的文本:
test:WEd.83H.gealA
创建以后,再次需要往别的版本仓库添加这个用户,直接把这一行复制过去就可以了。
重启apache就可以了。
|
1 |
$sudo /etc/init.d/apache2 restart |
三、 同步更新 [勾子]
同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上。
知识点:
1、SVN的hooks
# start-commit 提交前触发事务
# pre-commit 提交完成前触发事务
# post-commit 提交完成时触发事务
# pre-revprop-change 版本属性修改前触发事务
# post-revprop-change 版本属性修改后触发事务
通过上面这些名称编写的脚本就就可以实现多种功能了,相当强大。
2、同步命令rsync的具体参数使用
3、具有基个语言的编程能力bash python perl都可以实现
post-commit具体实现细节
post-commit脚本
|
1 |
$sudo vim /home/svn/fitness/hooks/post-commit |
注意:编辑完成post-commit后,执行:sudo chmod 755 post-commit
内容:
|
1 2 3 |
#!/bin/sh export LANG=zh_CN.UTF-8 sudo /usr/bin/svn update /var/www/www --username mirze --password 123456 |
或
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#Set variable SVN=/usr/bin/svn WEB=/home/test_nokia/ RSYNC=/usr/bin/rsync LOG=/tmp/rsync_test_nokia.log WEBIP="192.168.0.23" export LANG=en_US.UTF-8 #update the code from the SVN $SVN update $WEB --username user --password password #If the previous command completed successfully, to continue the following if [ $? == 0 ] then echo "" >> $LOG echo `date` >> $LOG echo "##############################" >> $LOG chown -R nobody:nobody /home/test_nokia/ #Synchronization code from the SVN server to the WEB server, notes:by the key $RSYNC -vaztpH --timeout=90 --exclude-from=/home/svn/exclude.list $WEB root@$WEBIP:/www/ >> $LOG fi |
以上是具体的post-commit程序
注意事项:
1、一定要定义变量,主要是用过的命令的路径。因为SVN的考虑的安全问题,没有调用系统变量,如果手动执行是没有问题,但SVN自动执行就会无法执行了。
2、SVN update 之前一定要先手动checkout一份出来,还有这里一定要添加用户和密码如果只是手动一样会更新,但自动一样的不行。
3、加上了对前一个命令的判断,如果update的时候出了问题,程序没有退出的话还会继续同步代码到WEB服务器上,这样会造成代码有问题
4、记得要设置所属用户,因为rsync可以同步文件属性,而且我们的WEB服务器一般都不是root用户,用户不正确会造成WEB程序无法正常工作。
5、建议最好记录日志,出错的时候可以很快的排错
6、最后最关键的数据同步,rsync的相关参数一定要清楚,这个就不说了。注意几个场景:
这里的环境是SVN服务器与WEB服务器是开的
把SVN服务器定义为源服务器 WEB服务器为目的服务器
场景一、如果目的WEB服务器为综合的混杂的,像只有一个WEB静态资源,用户提交的,自动生成的都在WEB的一个目录下,建议不要用–delete这个参数
上面这个程序就是这样,实现的是源服务器到目的服务器的更新和添加,而没有删除操作,WEB服务器的内容会多于源SVN的服务器的
场景二、实现镜像,即目的WEB服务器与源SVN服务器一样的数据,SVN上任何变化WEB上一样的变化,就需要–delete参数
场景三、不需要同步某些子目录,可能有些目录是缓存的临时垃圾目录,或者是专用的图片目录(而不是样式或者排版的)要用exclude这个参数
注意:这个参数的使用不用写绝对路径,只要目录名称就行 aa代表文件 aa/ 代表目录 ,缺点就是如果有多个子目录都是一样的名称那么这些名称就都不会被同步
建议用–exclude-from=/home/svn/exclude.list 用文件的形式可以方便的添加和删除
exclude.list
.svn/
.DS_Store
images/
利用SVN的钩子还可以写出很多的程序来控制SVN 如代码提交前查看是否有写日志,是否有tab,有将换成空格,是否有不允许上传的文件,是否有超过限制大小的文件等等。
Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量。系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效。
文章转载自http://leonhongchina.blog.163.com/blog/static/180294117201132611320112/
用户环境变量通常被存储在下面的文件中:
上述文件在Ubuntu 10.0以前版本不推荐使用。
系统环境变量一般保存在下面的文件中:
/etc/profile和 /etc/bash.bashrc在Ubuntu 10.0版本中不推荐使用。
如想将一个路径加入到$PATH中,可以像下面这样做(修改/etc/profile):
|
1 |
$ sudo nano /etc/profile |
在里面加入:
|
1 |
export PATH="$PATH:/my_new_path" |
你可以自己加上指定的多个路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:
|
1 |
$source /etc/profile |
需要注意的是,最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。
其他文件的修改方式与此类似,需要注意的是/etc/environment不需要使用export设置环境变量,其他profile文件需要。
更详细的说明可以参考这里。
Ubuntu 下面的内核经常升级,一段时间以后就很多了,浪费空间,网上搜索了一个脚本,用了下,感觉还可以。
原文是指定的Shell #!/bin/sh, 这个在Ubuntu下面是不能编译通过的,要要手动指定为bash 才行,主要是默认的sh不同造成的,不是什么大问题.
文件暂时命名成 Linux_Clean.sh吧
首先赋予执行权限
|
1 |
chmod +x Linux_Clean.sh |
尝试执行
|
1 |
./Linux_Clean.sh |
如果没有错误则执行
|
1 |
./Linux_Clean.sh -e |
建议执行脚本之前执行
|
1 |
dpkg --get-selections|grep linux |
看看自己有多少Linux内核
执行完成后继续执行
|
1 |
dpkg --get-selections|grep linux |
估计会很有成就感的
下面是脚本原文,复制黏贴即可
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#!/bin/bash # 清理ubuntu的老内核 # by bones7456 # http://li2z.cn CURRENT="`uname -r | awk -F"-" '{print $1"-"$2}'`" HEADERS="" IMAGES="" for HEADER in `dpkg --get-selections | grep ^linux-headers | \ grep -vE "(generic|386|virtual)" | awk '{gsub(/linux-headers-/,"",$1);print $1}'` do if [[ "$CURRENT" < "$HEADER" ]] then echo "正在运行的内核不是最新的。 $CURRENT < $HEADER" echo "Running kernel is not the newest. $CURRENT < $HEADER" exit 1 else [[ "$CURRENT" != "$HEADER" ]] && { HEADERS="${HEADERS} linux-headers-${HEADER}" IMAGE="`dpkg --get-selections | grep ^linux-image | \ grep "${HEADER}" | awk '{print $1}'`" IMAGES="${IMAGES} $IMAGE" } fi done if [[ x"$HEADERS" == x"" ]] then echo "没有要清理的老内核." echo "No old kernel need to clean." exit 0 fi CMD="sudo apt-get purge $HEADERS $IMAGES" echo "$CMD" if [ "$1" == "-e" ] then sh -c "$CMD" else echo "请确定以上命令是否正确,然后输入 $0 -e 来执行以上命令。" echo "Be sure this command is right, then type $0 -e to execute." fi |
编写了一个编译Android 的sh ,执行的适合 提示 "not a valid identifier" ,看了很久也没琢磨明白怎么回事,Google了一阵子才注意到 如下内容
当 在shell编辑脚本时,运行时出现了" ‘: not a valid identifier ",或者会出现(: command not found,许多莫名其妙的符号)很可能你在windows下编辑,在Linux下运行,由于Linux和windows的文本格式不同所导致的。
上面可能是反应之一,有时终端显示" :没有文件…"也是这个原因造成的 大部分由分号开头":"
解决方法:只要用UltraEdit工具转换成Linux格式,重新source运行无错误即可
Linux和windows的文本的区别:
1.Linux的换行: "n"
2.windows的换行: "rn"(回车,换行)
尽管我没有在Widows下面编译,但是却使用了wine下面的记事本编写,结果自然不用讲了。
简单解决方法 vim 新建一个文件,原文件内容粘贴过去就可以了。