linuxsource命令找不到,linux为什么找不到命令
linux中source这个命令放在那个文件夹下?
source是/bin/bash的内建命令,不是linux命令所以在PATH里面是找不到的。
Linux中source命令的使用方式
source 命令 是一个内置的 shell 命令 ,用于从当前shell会话中的文件读取和执行命令。source命令通常用于保留、更改当前shell中的环境变量。简而言之,source一个 脚本 ,将会在当前shell中运行execute命令。
source命令可用于:
刷新当前的shell环境
在当前环境使用source执行Shell 脚本
从脚本中导入环境中一个Shell函数
从另一个Shell脚本中读取变量
source命令的语法
source命令它需要一个文件,如果提供了参数,那么将用作传递脚本的位置参数。
source FILENAME [ARGUMENTS]
也可以使用.替代source命令:
. FILENAME [ARGUMENTS]
如何使用source命令
1. 刷新当前的shell环境
可以在当前的shell环境中定义一个别名。为ls -al定义一个别名为ll:
[root@localhost ~]# echo "alias ll='ls -al'" ~/.bashrc
在~/.bashrc文件中定义完别名,可以使用source命令刷新当前shell环境:
[root@localhost ~]# source ~/.bashrc
现在可以使用ll别名列出当前目录里所有文件了,包括隐藏文件。
2. 在当前环境使用source执行Shell脚本
Shell脚本不知道你在当前Shell环境中定义的变量。source命令可用于在当前会话中执行你的Shell脚本。
下面在定义一个变量:
[root@localhost ~]# website=. linux probe.com
创建一个脚本:
[root@localhost ~]# vim web.sh
#!/bin/bash
echo $website
使用source在当前shell会话中执行它:
[root@localhost ~]# source web.sh
当使用sh运行脚本时,找不到环境中定义的变量:
3. 从脚本中导入环境中一个Shell函数
首先创建一个脚本,定义一个函数:
[root@localhost ~]# vim func.sh
#!/bin/bash
foo(){
? echo "test function!"
}
要在当前的shell会话中导入上述脚本的功能,使用下面命令:
[root@localhost ~]# source func.sh
下面在终端中执行以下func.sh脚本中的foo函数试试:
[root@localhost ~]# foo
test function!
source完脚本之后,可以看到在当前回话的终端中可以执行脚本里面的函数。
4. 从另一个Shell脚本中读取变量
首先创建带有一些变量的shell脚本,请输入:
[root@localhost ~]# vim var.sh
#!/bin/bash
a=1
b=2
c=3
再创建一个脚本,该脚本读取上一个脚本var.sh中的变量:
[root@localhost ~]# vim read.sh
#!/bin/bash
source ~/var.sh
echo $a
echo $b
echo $c
在脚本中首先使用source将var.sh中的变量到处到当前回话,然后echo显示变量值。下面执行read.sh看一下:
5. 读取并执行命令
source命令可以从文件读取和执行命令。下面的一个文本文件中带有两个命令,使用source命令运行该文件,看看是否会执行里面的命令。
下面创建一个文件cmd.txt,保存两个命令:
[root@localhost ~]# cat cmd.txt
ip ad
date
下面使用source执行这个文件:
[root@localhost ~]# source cmd.txt
总结
source命令在当前shell中执行脚本,而exec命令在新的shell中运行。
Linux 下执行 source /etc/profile后提示 -bash: rt: command not found 如何解决?
Linux 下执行 source /etc/profile后提示 -bash: rt: command not found是设置错误造成的,解决方法为:
1、安装完oracle数据库后发现oracle用户下无法执行普通命令了,连ls也无法使用。
2、在这个文件中配置的时候少了一个$PATH参数。
3、把参数修改完成后再使用命令发现就可以 正常使用了。不过这种情况是在安装了oracle数据库后配置文件出现的问题。
4、在命令行中执行 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 命令。
5、在文件的底部添加上 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin? 命令,这样在系统即使是重启或者是切换用户都可以正常使用命令。
linux下提示命令找不到:-bash:command not found
Linux下输入某些命令时会提示:bash:command not found。
首先,查看$PATH中是否包含了这些命令。
$PATH:决定了shell到哪些目录中去寻找命令或程序,PATH值是一系列的目录。当运行程序时,linux到这些目录下搜索进行编译链接。
格式:
PATH = $PATH:PATH1:PATH2:PATH3:...:PATH N
可以将自己指定的路径加到PATH中,中间用冒号":"隔开。环境变量更改后,会在用户下次登录的时候生效;若想立即生效,则需要执行:
1 $ source .bash_profile
完成之后可以通过 echo echo PATH查看当前的搜索路径。这样定制之后,可以避免频繁的启动位于shell搜索路径之外的程序。
方法二: echo echo PATH
1 [root@localhost /]# echo $PATH
2 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
3 [root@localhost /]#
添加$PATH环境变量:
[root@localhost u-boot-sh4]#export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH
再次查看:
1 [root@localhost u-boot-sh4]# echo $PATH
2 /opt/STM/STLinux-2.3/devkit/sh4/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
则说明添加PATH成功。
上述方法添加PATH 在终端关闭后会消失。建议通过编辑/etc/profile 修改PATH,也可修改/home目录下的 .bashrc
1 export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
保存后,退出,执行:
1 [root@localhost etc]# source /etc/profile
不报错就成功。
$PATH下目录简介
./bin:
bin为binary的简写主要放置一些系统的必备执行档案。如:cat,cp, chmod df, dmesg, gzip, kill, ls, mkdir, more, mount, rm, su, tar 等。
/usr/bin:
主要放置一些应用软体工具的必备执行档例。如:c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome 、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb 、wget等。
/sbin:
主要放置一些系统管理的必备程式例。如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr/sbin:
放置一些网路管理的必备程式例。如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。