UNIX/Linux修改PATH变量

安装完操作系统(UNIX 或 Linux,尤其是Solaris这样的系统)后经常遇到:command not found 的错误提示, 原因:一是需要的程序可能没有安装(安装上就得了),二是程序不在搜索路径里。 如果程序不在搜索路径里,就需要手动修改PAThH,把可执行程序的路径加到PATH系统变量中。 首先,确认一下目前的PATH, 用命令 echo $PATH 然后对缺失的path进行添加。方法如下: 对于Bash: 编辑home下的.bashrc 或.profile 或 .bash_profile,添加代码 export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$HOME/bin 对于Csh: 编辑home下的.cshrc,添加代码 set path=($path /bin /sbin /usr/bin /usr/sbin /usr/local/bin $home/bin)

2015年3月4日 · 1 分钟 · Jid

获取整数的最大值最小值的宏定义及可能出现的问题

在C/C++编程中时常需要使用整数的最大值最小值,通常这两个常用是跟平台和操作系统有关的,不同的平台会有不同的值,因此可移植的办法就是使用库函数提供的常量定义。 (1)类似的常量定义在limits.h和float.h头文件中,可以查看源文件获取类似常量的使用办法。在头文件中,整数的最值通常是这样的名字:INT_MAX, INT_MIN,直接使用即可。 (2)当然这两个最值完全可以通过编程实现: #define MAX_INT ((unsigned)(-1)>>1) #define MIN_INT (~MAX_INT) 但是,这两个宏仅仅是没有类别的符号,在使用的时候会陷入困境。看下面这段C++程序,输出结果出乎意料。 #include <iostream> #include <limits> #define MAX_INT ((unsigned)(-1)>>1) #define MIN_INT (~MAX_INT) int main() { std::cout << "max_int: " << MAX_INT << "\n" << "min_int: " << MIN_INT << std::endl; } 输出结果是 max_int: 2147483647 min_int: 2147483648 结果怎么会是这样呢? 问题就出在:输出MIN_INT时,由于MIN_INT仅仅是个符号,在输出给cout时就按照Cpp的规则以长整数输出了,因此正确的办法是 cout << "max_int: " << (int)MAX_INT << "\n" << "min_int: " << (int)MIN_INT << endl; 当然最好的办法还是不要使用#define这个宏,不安全。 (3)针对上面的问题,一个比较好的解决办法是,直接定义常量: const int MAX_INT = ((unsigned)(-1))>>1; const int MIN_INT = ~MAX_INT; 示范代码如下: ...

2015年3月3日 · 1 分钟 · Jid

cygwin安装最新manpages

cygwin自身带的manpages不够全,比如 “man listen” 就没有,所以需要自己手动安装Linux的最新manpages。 下面有两个办法,推荐第一个: <1> 下载并安装到系统中 下载最新的manpages资源 http://www.kernel.org/pub/linux/docs/man-pages/,我下载的版本是3.41 解压都HOME中 make gz ; make install # 即可使用了 <2> 只下载不安装 下载最新的manpages资源http://www.kernel.org/pub/linux/docs/man-pages/,我下载的版本是3.41 解压到目录 %cygwin%\usr\man,%cygwin%就是cygwin的安装目录 在cygwin环境中编辑文件/etc/man.conf,增加一行 MANPATH /usr/man/man-pages-3.41 保存退出。其中上面的数字3.41要根据版本号做修改 重启cygwin环境即可使用。 经过以上步骤,一般的man信息就都可以在本地查找到了(基本上是全部)。

2015年3月2日 · 1 分钟 · Jid

Vim自动跳到上次浏览文件时的位置

在Windows下用gvim,这个选项是默认打开的。也就是用vim打开文件时,可以记忆退出时的位置,从而再次打开就会直接跳到上次的位置。 该项控制命令写在$VIMRUNTIME/vimrc_example.vim下,可以把下面的命令拷贝到 {$HOME}/.vimrc 文件中,本方法尤其适用于Linux用户: " Only do this part when compiled with support for autocommands. if has("autocmd") filetype plugin indent on " Put these in an autocmd group, so that we can delete them easily. augroup vimrcEx au! autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") | \ exe "normal! g`\"" | \ endif augroup END else set autoindent " always set autoindenting on endif " has("autocmd")

2015年3月1日 · 1 分钟 · Jid

solaris set NFS

以下操作均需root权限 server端: (1)开启守护进程: svcadm enable network/nfs/server (solaris 10) /etc/init.d/nfs.server start (solaris 10及以前版本) (2)共享目录,按照如下格式: share [-F fstype] [ -o options] [-d "<text>"] <pathname> [resource] 或 share -F nfs -o rw=engineering -d "home dirs" /export/home2 或 share -F nfs -d "my shared dir" /export/home/shared_dir 注意,以上的命令可以即时生效,但是系统重启后就没了。 所以,最好再写进启动脚本里,只要把上面的share代码完完整整添入/etc/dfs/dfstab即可。 (3)检查share是否成功 dfshares 或 showmount -e client端: (1)开启守护进程: svcadm enable network/nfs/server (solaris 10) /etc/init.d/nfs.server start (solaris 10及以前版本) (2)进行挂载,与前面的相似,也是有两个办法 命令行:mount -F nfs ServerIP:/SharedPath ClientPath ...

2015年2月19日 · 1 分钟 · Jid

ubuntu安装dos2unix工具

ubuntu下默认没有安装dos2unix工具,而且也没有一个叫这个名字的工具(我在solaris里用过dos2unix,不知道为啥ubuntu没有)。 但是有一个替代工具——tofrodos , 下面就说一下它的安装和使用。 (1)安装tofrodos sudo apt-get install tofrodos 实际上它安装了两个工具:todos(相当于unix2dos)和fromdos(相当于dos2unix) 安装完即可,现在你已经可以进行文本格式的转换啦。 比如: todos Hello.txt (即unix2dos Hello.txt) fromdos Hello.txt (即dos2unix Hello.txt) (2)做一些优化 由于习惯了unix2dos和dos2unix的命令,可以把上面安装的两个工具链接成unix2dos和dos2unix,或者仅仅是起个别名,并放在启动脚本里。 步骤: ln -s /usr/bin/todos /usr/bin/unix2dos ln -s /usr/bin/fromdos /usr/bin/dos2unix 或者在 ~/.bashrc里起个别名 vi ~/.bashrc 添加 alias unix2dos=todos alias dos2unix=fromdos

2015年2月10日 · 1 分钟 · Jid

Solaris 设置 locale

Locale简单说就是一组「地区语言」的资讯。它包括了 LC_CTYPE: 字符定义 LC_MESSAGES: 讯息显示 LC_TIME: 时间显示格式 LC_NUMERIC: 数字显示格式 LC_MONETARY: 货币显示格式 LC_COLLATE: 字母顺序与字符串比较 其中,与一般使用者最有关系的,是 LC_CTYPE 与 LC_MESSAGES 。 LC_CTYPE 直接关系到某些字符或内码在目前的locale下是否可印? 要如何转换? 对应到那一个字? …. 等等。 LC_MESSAGES 则关系到软体的讯息输出是什么样的语文。真正完整的locale支持,是当我们在shell prompt下,直接设好环境变数,则我们马上就能切换到那个语言。 以上文字由Linux红联社区翻译自:IBM knowledge centor Solaris Locale的设置方法如下 (1)查看当前locale状态: # locale LANG=en_US LC_CTYPE= "en_US" LC_NUMERIC= "en_US" LC_TIME= "en_US" LC_COLLATE= "en_US" LC_MONETARY= "en_US" LC_MESSAGES= "en_US" LC_ALL=en_US (2)查看系统中已安装的语言包: # locale -a (3)用户自定义locale: For: sh, ksh, bash # LANG=C; export LANG # LC_ALL=C; export LC_ALL For: csh: ...

2015年2月9日 · 2 分钟 · Jid

Home directories under solaris

Under Solaris, home directories are conventionally kept on one of two places,/homeor/export/home. The/homedirectory isunder control of the automounter and only the automounter can create directories there. The/export/homedirectory is where users home directories can be created by the system administrator. To create an account for user ‘oops’ where the UID is 400 and users home directory is not automounted: useradd -u 400 -g user -c useroops -m -d /export/home/oops oops passwd oops(To set the password) chown oops /export/home/oops chgrp user /export/home/oops To create an account for ‘oops’ where the home directory is automounted andthe mount point for/homeis/etc/auto_home: ...

2015年2月8日 · 1 分钟 · Jid

最大公约数 C 语言实现

最大公约数:Greatest Common Divisor,简写为gcd。 这里提供求两个整数最大公约数的计算机算法 辗转相除法(或称欧几里得算法) Stein算法(该算法解决了大数相除的困难) (1)辗转相除法(或称欧几里得算法) 欧几里得算法的依据是数学定理:gcd(y,x)=gcd(y,y%x) (其中y>=x). 下面给出该定理的证明: 由于 y >= x, 可以表示为 y = k*x + b, 其中 k = y/x, b = y%x, 即k和b分别表示商和余数。 下面, 如果一个数(d)能同时被y 和 x 整除, 记为 d|y, d|x, 由 b = y – k*x, 知道 b也能被d整除,即 d|b 同理,如果有整数D能被x 和 b 整除,即 D|x, D|b, 又由y = k*x + b, 知道 y也能被D整除,即 D|y. 现在由上面的推导知道(y, x)和(x, b)的公约数是一样的,即 (y, x)和(x, y%x)的公约数是相同的,那么他们的最大公约数也相同,即 gcd(y,x)=gcd(y,y%x)。 欧几里得算法就依据这个公式:gcd(y,x)=gcd(y,y%x),直到出现余数为零,这时的除数就是最后的最大公约数。 /*C语言实现*/ /*辗转相除法*/ #include <stdio.h> void swap(int *a, int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; } int gcd(int a, int b) { if (a == 0) return b; if (b == 0) return a; if (a < b) swap(&a,&b); int result = a%b; while(result != 0) { a = b; b = result; result = a%b; } return b; } int main() { int m, n; m = 56; n = 108; printf("The greatest common divisor of %d and %d is: %d\n",m,n,gcd(m,n)); return 0; } (2)Stein算法 ...

2015年1月15日 · 2 分钟 · Jid

UNIX/Linux关掉报警声

现在要关掉UNIX/Linux下的声音,尤其是在命令行下出现的嘟嘟报警声,可以用下面的命令: 方法一: echo “set bell-style none”>> ~/.inputrc 然后logout、login即可生效 方法二:编辑 /etc/inputrc,将/etc/inputrc中的 set bell-style none 前的#去掉; 由于有的系统没有/etc/inputrc,因此推荐第一种办法。既安全有方便。 若还去除 Vi 中的铃声,需要 echo “set vb t_vb=” >> ~/.vimrc

2015年1月13日 · 1 分钟 · Jid