欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

linux有些sh文件,为什么要用 ./ 来执行 点斜杠 点正斜杠 有大用 有大大用

因为有环境变量PATH,里面包含了许多目录,这些目录下的可执行文件就无需输入完整路径来执行。
你可以用 echo "$PATH"查看当前的环境变量包含的目录,自带的命令文件都是在PATH 中的,所以可以直接使用。
./代表当前目录,由于自己编写的脚本就在当前目录下,而当前目录不在环境变量中,所以得输入包含完整目录的文件名。

例如$ ./xx.sh 或者 $ /home/xxx/xx.sh

 

./代表当前目录,没有配置环境变量的话,就要进入到sh文件所在目录下,./ xx执行该文件。

来自  https://www.cnblogs.com/wuzm/p/11126963.html


linux的shell执行程序时为什么需要加一个 "./"?

               
holdoner 2013-04-29 18:48:22  6065  收藏 2                
分类专栏: linux                
版权            


以前刚接触linux时的时候,知道在linux系统里执行可执行程序的时候,跟windows操作系统下有点不同。在linux在执行程序的时候必须要在可执行程序之前加" ./ "。当时对个规定很不解。但是自己当时没有能力搞懂。当时的自己连一些基本的linux命令都还不知道呢。

到今天为止,我已经跟linux打了多年的交到。今天终于搞懂这个原因了,觉得非常兴奋。

在bash下输入命令的时候,bash是根据PATH环境变量来查找程序的,但是与windows不同的是,bash不会在当前目录下面寻在可执行程序。再根据linux下“.'表示当前目录,所以在命令之前加上"./"便可以很自然的理解为在当前目录下寻找程序。

那么是否可以对环境变量PATH进行设置,使得执行命令的时候可以不要输入"./"呢?比如设置PATH=.:$PATH。答案是:不行!我已经是验证过了.不知道为什么.

既然这样我有怎么能说出上面的论断呢?因为如果PATH的设置中包括了你要运行的程序的路径,那么执行程序的时候就可以不用输入"./"。很明显的一个例子就是那些在/usr/bin和/usr/sbin下面的所谓的“系统命令”。你也可以用一个自己的路径去验证。比如在有/opt/p,即在/opt下面有一个可执行文件p,这时你只需要把/opt加到PATH中去,之后你就可在/opt目录下直接输入p而不用输入./p了。


来自  https://blog.csdn.net/neil_lee_/article/details/8867581


linux有些sh文件,为什么要用 ./ 来执行

因为有环境变量PATH,里面包含了许多目录,这些目录下的可执行文件就无需输入完整路径来执行。
你可以用 echo "$PATH"查看当前的环境变量包含的目录,自带的命令文件都是在PATH 中的,所以可以直接使用。
./代表当前目录,由于自己编写的脚本就在当前目录下,而当前目录不在环境变量中,所以得输入包含完整目录的文件名。

例如$ ./xx.sh 或者 $/home/xxx/xx.sh

 

./代表当前目录,没有配置环境变量的话,就要进入到sh文件所在目录下,./ xx执行该文件。

转载于:https://www.cnblogs.com/wuzm/p/11126963.html

来自  https://blog.csdn.net/weixin_30437481/article/details/94829587


为什么我的.sh命令必须在前面加上./*****.sh才能执行?        

Linux/Unix社区>系统维护与使用区            
收藏回复            
[问题点数:20分,结帖人musashi]        
  • musashi                    
    等级                     
    结帖率 97.5%
  • 假设一个sh命令:start.sh
    那么我进入这个命令所在的路径,然后输入:
    start.sh
    却不能执行,
    正确方法是:
    sh start.sh 可以执行,
    ./start.sh 也可以执行,为什么?

                   
    楼主                
  • zdmaster                    
    等级                     
  • 看看是不是登录用户的配置文件有问题,是不是没有默认的shell。
    我也是刚学,好像记得书上说过,不知道对不对?
    #1得分 2                
  • XChinux                    
    等级                     
  • Linux不像DOS,默认的先搜索当前路径,而Linux一般情况下是按$PATH变量去搜索的,
    用户的当前路径是不包含在此变量中的,所以要执行当前路径下的start.sh(必须是有可执行属性)文件,需要明示其路径,用相对路径如./start.sh或绝对路径
    #2得分 2                
  • azoth                    
    等级                     
  • 假设你的文件在//test/start.sh
    运行的话就
    ./start.sh
    /test/start.sh
    sh start.sh
    3种方法
    #3得分 2                
  • suowei1979                    
    等级                     
  • Linux不像DOS,默认的先搜索当前路径,而Linux一般情况下是按$PATH变量去搜索的,
    用户的当前路径是不包含在此变量中的,所以要执行当前路径下的start.sh(必须是有可执行属性)文件,需要明示其路径,用相对路径如./start.sh或绝对路径
    #4得分 2                
  • zhouqi66                    
    等级                     
  • 同意楼上的,Linux下的执行程序路径是由$PATH指定的,不包括当前路径,所以要用./指定.
    #5得分 2                
  • pacman2000                    
    等级                     
    勋章                    
    Blank                        
    Blank                        
    Blank                        
  • 在redhat里,默认情况下当前目录不在PATH搜索路径中。你可以修改$HOME/.bash_profile的PATH设置,把当前路径加上。
    #6得分 2                
  • ccwwcsdnc                    
    等级                     
  • ./a.out
    ./即当前目录,../上一级目录。
    你不可能把所有目录都加到路径变量$PATH中,所以执行当前目录下的文件时用./,这是习惯。
    #7得分 2                
  • XChinux                    
    等级                     
  • 据说因为有当前路径在$PATH中的话,不安全,所以还是用./a.out来的好
    #8得分 2                
  • haha886                    
    等级                     
  • 好像都是执行那些path里面的 没有的 必须全路径
    #9得分 2                
  • Tycool                    
    等级                     

来自  https://bbs.csdn.net/topics/60215408



linux执行自己写的脚本,程序为什么要用 ./ 来执行    

自带的命令执行时为什么不需要?    
 我来答 
分享
 举报
叉烧帝
推荐于2017-09-05 · TA获得超过598个赞            
关注            
因为有环境变量PATH,里面包含了许多目录,2113这些目录下的可执5261行文件就无需4102输入完整路径来执行1653
你可以用 echo "$PATH"查看当前的环境变量包含的目录,自带的命令文件都是在PATH 中的,所以可以直接使用。
./代表当前目录,由于自己编写的脚本就在当前目录下,而当前目录不在环境变量中,所以得输入包含完整目录的文件名。例如$ ./xx.sh 或者 $/home/xxx/xx.sh
 32                           
 评论 
分享
 举报

你也可以使用2113sh为运行5261

sh file
如果你做好自己的脚本,就4102放到/bin里面,1653如,
/opt/file.sh
#ln -s /opt/file.sh /bin/myfile
重新打开bash
myfile这个脚本就可以使用了。
 本回答被提问者和网友采纳

来自  https://zhidao.baidu.com/question/549373418.html



普通分类: