ubuntu 脚本 修改权限之后还是无法执行如$hello 回复command not found 书上提示 check you PATH请问咋弄

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu 脚本 修改权限之后还是无法执行如$hello 回复command not found 书上提示 check you PATH请问咋弄相关的知识,希望对你有一定的参考价值。

参考技术A 你进入终端的时候是在桌面的上一层目录(即你的家目录),先进入桌面
cd 桌面
再用
sudo ./setup.sh吧。

另外你是解压在桌面上的一个文件夹里,还是直接把安装文件全部放在了桌面?如果是前者,那还要cd (这个文件夹的名称) 总之进入到setup.sh的安装目录,再用./setup.sh命令。

如果你还没有装汉化包,那可能是
cd desktop,你可以用ls命令看一下,反正是跟桌面有关的一个词。

ls的作用跟dos的dir类似,查看当前目录下的文件和目录。

------------------------------------
假设你的用户名叫lsndsr,那么打开终端,一开始的提示符应该是类似
lsndsr@lsndsr-desktop:~$
说明你是用户名为lsndsr的用户,在名为lsndsr-desktop的计算机上,你的当前目录是~,~的意思是你的家目录,也就是
/home/lsndsr.
你的桌面目录是在
/home/lsndsr/桌面
或者
/home/lsndsr/desktop
又或者
/home/lsndsr/Desktop
依据你的ubuntu设定的语言不同而不同。

-----------------------------------
注意:ubuntu系统是区分大小写的
你要做的是:
1.打开终端
2.输入命令“ls”(不包含括号)
你会看到
dic.txt fonts.dir tmp 数据结构.pls 桌面
EIOffice fonts.scale 编程 图片
EIOfficelog.txt homework 公共的 文档
Examples linux_fetion.deb 模板 物理实验 22 31.ods
film MyDownloads 视频 音乐

类似这样的列表,上面必然有一个“桌面”或者“desktop”的名字,这里先假设是“桌面”。

3.输入命令“cd 桌面”.
你会看到提示符变成
lsndsr@lsndsr-desktop:~/桌面$
说明你进入了桌面目录。

如果输入不了中文,可以用鼠标选中上面ls的结果中的“桌面”两个字,按“shift+ctrl+c”,再按“shift+ctrl+v”,就可以复制到你当前的提示符后。

4.输入命令“cd EIoffice_personal”
提示符变成lsndsr@lsndsr-desktop:~/桌面/EIoffice_personal$
说明你进入了EIoffice_personal这个目录。

5.输入命令“sudo ./setup.sh”或者“sudo ./setup”
意思是运行当前目录下的setup.sh脚本。

*如果不成功,有可能是你在图形界面中没有授权成功,那么就在第四步之后输入命令“sudo chmod +x setup.sh”,
意思是用超级用户的权限给setup.sh文件加上可执行权限。

*sudo命令需要输入你当前用户的密码。

暂时就这么多了,想不到有什么需要注意的了。
有什么事你再补充吧,或者给我发个信息也行。
1、核实 mips-openwrt-linux-uclibc-gcc 是否有执行权限
chmod +x mips-openwrt-linux-uclibc-gcc
2、核实 mips-openwrt-linux-uclibc-gcc 是否为快捷链接,
1)其链接的gcc是否有执行权限
2)其链接是否在正确的位置
3、核实PATH路劲是否添加正确(相信楼主是加正确了的)

根据楼主截图,这个环境变量是有的,一般应该检查1、2点

linux文件权限误修改之后如何恢复

linux系统权限修复
应用场景
在有些时候,不小心执行了修改文件权限,比如chown mysql.mysql / ,这种对属组属主的操作,想要恢复看起来很麻烦,怎么办呢
这个脚本可以让你脱离苦海
使用条件
  • 可以提前备份相关权限,脚本提供备份功能
  • 也可以找到权限相似的主机备份好之后在自己主机恢复
备份方法:
  • 直接复制脚本内容,在你的主机向运行,需要有getfacl命令
  • 备份完成后,备份的是整个文件系统当中所有文件的权限信息
  • 含有两个文件,分别是/tmp/getfacl.txt和/tmp/getfacl_part.txt
  • 将这两个文件保存好,下次恢复的时候将它放在/tmp下执行脚本选择恢复就好了
恢复方法:
1.执行下面脚本,选择恢复类型(前提是有备份文件,不然没有恢复选项)
        选择需要恢复属主属组信息,还是权限信息,说白了就是说你是怎么破坏的
        使用chown破坏的还是chmod破坏的。
2.输入需要恢复的目录,注意这个目录是会被递归恢复的,比如输入/var,那么/var下面的所有的文件权限将被恢复,必须是绝对路径!
       如果为空,那么将会恢复整个文件linux系统下的所有文件的权限
 
脚本内容
下面是脚本
注释相对还是清楚的。
  1 #!/bin/bash
  2 #
  3 # date2016.12.3
  4 # author:小黑哥
  5 # mail:1783790199@qq.com
  6 # versions: 1.0
  7 # 这两个文件是备份后生成的文件
  8 # 第一个存放没有特殊权限位的文件的属性信息
  9 # 第二个用来存放含有特殊权限位的文件的属性信息
 10 Back_File="/tmp/getfacl.txt"
 11 Back_File_Part="/tmp/getfacl_part.txt"
 12 #. /tmp/dialog.sh
 13 # 打印帮助信息的函数
 14 Help(){
 15 clear
 16 echo -e "\n\n\n\n\n\n\n\n\n
 17 ----------------------------------
 18 1.备份默认会备份整个文件系统所有的文件
 19 2.恢复的时候可以选择性恢复
 20 3.需要先备份
 21 4.后面才能恢复
 22 5.如果没有备份,可以到配置相似的机器上进行备份
 23 6.两个备份文件分别为$Back_File $Back_File_Part
 24 7.祝您事业顺利
 25 8.有更好的想法请联系 \e[1;[email protected] 小黑哥\e[0m
 26 ----------------------------------
 27 "
 28 }
 29 # 负责备份工作
 30 back(){
 31 # 首先cd到根下面
 32 cd /
 33 # 不管原先的备份文件存在不存在,直接复制,存在的话做备份,不存在也不碍事
 34 \cp $Back_File ${Back_File}.bak &>/dev/null
 35 # 致空文件系统属性的备份文件,因为下面是用追加的方式做的
 36 >$Back_File 
 37 # 备份肯定是要做整体备份,防止某天出现意外
 38 for i in  `ls /`
 39 do
 40 # 因为/proc是一个伪文件系统,所以呢,不需要备份,向备份也备份不了
 41      if [ $i == proc ] ;then
 42           for a in `ls proc`
 43           do
 44               [[ $a =~ ([0-9]+|sys) ]] && continue
 45               getfacl -R proc/$a |grep -v "^$" >>$Back_File    
 46           done
 47      else
 48 # 将导出的文件系统属性信息保存到备份文件当中
 49           getfacl -R $i 2>/dev/null |grep -v "^$" >>$Back_File
 50      fi
 51 done
 52     # 找出带有特殊权限位的文件信息,保存到特殊文件信息专用的文件中,grep找出来会在没个信息后面多出“-- 53     # 所以后面使用awk清除无用信息
 54      cat $Back_File |grep -C 3  "# flags:" |awk {if(($0!="--"))print $0}  >$Back_File_Part
 55     # 从备份文件当中找出含有特殊权限位文件的属性信息的行号,将其赋值给Line属组
 56      Line=(`cat -n $Back_File |grep -C 3  "# flags:"  | awk {if(($0!="--"))print $1"d;"}`)
 57     # 因为特殊权限位文件的和其他文件的属性信息不同,所以需要将其从主备份文件当中删除掉
 58     # 这里只能使用*号,而不能使用@,使用@会报错,无法执行,貌似是将数组中的元素当做了文件。
 59     # 返回1是为了说明,备份可能没有成功
 60      sed -i "${Line[*]}" $Back_File || return 1
 61      
 62 return 0
 63 }
 64 cd /
 65 # 这个函数是为了恢复含有特殊权限位的文件而准备的,
 66 recove_handle(){
 67 # 在调用该函数的时候,追加了恢复类型,在这里需要提前做下变量转移,不然下面会被set重置。
 68 Reco_Type=$1
 69 # 在该函数之前已经准备好了${Back_File}.1文件,就是需要恢复的文件的属性信息都在这个文件当中
 70 # 在处理过程中,需要打印文件名,属组,属主,属组权限,属主权限,其他用户权限
 71 # 使用if作为条件判断,将必要的信息赋值给Auth_Info
 72 Auth_Info="`cat ${Back_File}.1 | awk -F ‘:| ‘ ‘{print $NF}‘ |awk ‘{if((NR%6==3 || NR%6==2  || NR%6==1)){print $0};if((NR%6==0 || NR%6==4 || NR%6==5)){r=4;w=2;x=1};if(($0=="rwx"))print w+r+x;if(($0=="r-x"))print r+x;if(($0=="r--"))print r;if(($0=="-w-"))print w;if(($0=="rw-"))print r+w;if(($0=="---"))print "0";if(($0=="--x"))print x;if(($0=="-wx"))print w+x}‘`"
 73 Num=1
 74 for i in $Auth_Info
 75 do
 76 # 做简单的条件判断,因为6行是一个文件的所有的属性信息,使用Num最大值为6进行轮替,恢复每一个文件的属性。
 77      [ $Num == 1 ] && File=$i && let Num++ && continue
 78      [ $Num == 2 ] && User=$i && let Num++ && continue
 79      [ $Num == 3 ] && Group=$i && let Num++ && continue
 80      [ $Num == 4 ] && OwnAu=$i && let Num++ && continue
 81      [ $Num == 5 ] && GroupAu=$i  && let Num++ && continue
 82      [ $Num == 6 ] && OtherAu=$i && Num=1 
 83  
 84 # 判断备份文件中提取出来的文件是否存在,因为文件有可能在备份信息之后被删除。
 85     [ ! -e $File ] && continue
 86 # 判断应该使用那一种恢复类型,跟之前传递进来的一致就行
 87 # 判断放在这里每个文件都需要判断,效率不高,但是放在循环外面,代码又的多写。也是醉了
 88     [ $Reco_Type == chown ] && $Reco_Type $User"."$Group $File && continue
 89     $Reco_Type $OwnAu$GroupAu$OtherAu $File
 90 done
 91 # 同上个循环,只是在这个循环恢复的是带有特殊权限的文件
 92 Auth_Info="`cat ${Back_File_Part}.1 | awk -F ‘:| ‘ ‘{print $NF}‘ |awk ‘{if((NR%7==3 || NR%7==2  || NR%7==1)){print $0};if((NR%7==0 || NR%7==4 || NR%7==5 || NR%7==6)){r=4;w=2;x=1};if(($0=="rwx"))print w+r+x;if(($0=="r-x"))print r+x;if(($0=="r--"))print r;if(($0=="-w-"))print w;if(($0=="rw-"))print r+w;if(($0=="---"))print "0";if(($0=="--x"))print x;if(($0=="-wx"))print w+x;if(($0=="s--"))print "4";if(($0=="-s-"))print "2";if(($0=="--t"))print "1"}‘`"
 93 [ -z "$Auth_Info" ] && return
 94 Num=1
 95 for i in $Auth_Info
 96 do
 97      [ $Num == 1 ] && File=$i && let Num++ && continue
 98      [ $Num == 2 ] && User=$i && let Num++ && continue
 99      [ $Num == 3 ] && Group=$i && let Num++ && continue
100      [ $Num == 4 ] && Part=$i && let Num++ && continue
101      [ $Num == 5 ] && OwnAu=$i && let Num++ && continue
102      [ $Num == 6 ] && GroupAu=$i  && let Num++ && continue
103      [ $Num == 7 ] && OtherAu=$i && Num=1 
104 # 跟上面大同小异,只是多了一个特殊权限$Part而已
105     [ ! -e $File ] && continue
106     [ $Reco_Type == chown ] && $Reco_Type $User"."$Group $File && continue
107     $Reco_Type $Part$OwnAu$GroupAu$OtherAu $File
108 done
109 }
110 # 这个函数是整个恢复模块,其实就是为了主程序逻辑方面看起来稍好一点
111 recove(){
112 # 习惯性的cd /,haha!
113 cd /
114 # 这个循环就是为了让用户输入必要的信息
115 while true
116 do
117     echo -e "\n\n"
118     read -p "请输入你要恢复属主属组信息还是权限信息(按q退出)(chown或者chmod)" Reco_Type
119     
120     [ i$Reco_Type == iq ] && return 4
121     echo -e "\n\n"
122     read -p "请输入你要恢复的目录的绝对路径,输入为空恢复整个文件系统权限信息(按q退出):" Reco_Dir
123     echo "请稍后。。。。"
124     [ i$Reco_Dir == iq ] && return 4
125     
126     [[ "$Reco_Type" =~ (chmod|chown) ]] && break
127     
128 done
129 # 用户输入的是是就对路径,带“/”,但是在备份文件当中没有根的,备份方式决定的。
130 # 所以呢,将/给取点,让之后的操作可以正常进行
131 Reco_Dir=`echo $Reco_Dir |sed [email protected]^/@@`
132 # 如果用户输入的是空,那么恢复整个文件系统权限,需要整个备份文件的信息
133 # 直接使用复制主备份文件,这个子文件在恢复完成之后就被毁掉了,所以,
134 # 你懂得。
135 if [ -z $Reco_Dir ];then
136    \cp $Back_File ${Back_File}.1
137    \cp $Back_File_Part ${Back_File_Part}.1
138 # 如果用户输入的是指定目录或者文件的权限信息,那么找出相应文件获这目录的权限信息,加以恢复
139 else
140 # 每个属性信息都是以“# file:”为开头的,找出以这个为开头的行
141 # 同时打印这行开始的n行,一般文件属性信息有6行,而特殊权限位的有7行
142 # 所以,分别处理
143     grep -A 5 "^# file: $Reco_Dir" $Back_File  > ${Back_File}.1
144     grep -A 6 "^# file: $Reco_Dir" $Back_File_Part > ${Back_File_Part}.1
145 fi
146 # 如果用户输入的文件或者目录不存在,那么这两个文件都是空的,返回3,给主程序处理
147 [ ! -s $Back_File.1 -a ! -s $Back_File_Part.1 ] && return 3
148 # 如果文件不都是空的,走这边,将
149 recove_handle $Reco_Type
150 }
151 # main procces 
152 # 如果$1 等于-h或者--help那么获取帮助信息,嘿嘿。
153 [[ $1 =~ (-h|--help) ]] && Help && exit 0
154 clear
155 if [ ! -f $Back_File ];then
156 # 打印提示信息,让用户选择
157    echo -ne "\v\v\v\v\v\v\v\v\v\v\v\v备份文件不存在,是否进行备份(默认备份)?输入y或者Y进行备份: "
158    
159    read sele
160    case $sele in
161    y|Y|"")
162        echo "请稍后。。。。"
163 # 调用back函数,专门用来备份
164        back
165 # 如果备份完成,打印完成信息
166        [ $? == 0 ] && echo -e "\n整个文件系统权限信息备份完毕,文件位置为$Back_File $Back_File_Part\n" &&  exit 0
167        echo -e "\n整个文件系统权限信息备份失败,检查用户是否有权限做备份。" && exit 1
168        ;;
169    
170    *)
171        echo "文件系统权限信息没有备份,请及时处理!" 
172        exit 0;;
173      
174    esac
175 else
176 # 如果备份文件存在也会提示是否备份
177    echo -ne "\v\v\v\v\v\v\v\v\v\v\v\v\v\v备份文件已经存在,需要进行进行备份还是恢复? r|R(恢复) b|B(备份): "
178    read sele
179    case $sele in
180    b|B)
181        echo "请稍后。。。。。。"
182        back
183        [ $? == 0 ] && echo -e "\n整个文件系统权限信息重新备份完毕,文件位置为$Back_File $Back_File_Part\n" &&  exit 0 ;;
184    r|R)
185 # 调用恢复函数,由函数的返回结果,打印具体信息
186        recove
187        case $? in 
188        0)
189           echo -e "\n/$Reco_Dir 下所有文件权限信息恢复至 `stat $Back_File |awk -F "Modify: " ‘/Modify/{print $2 }‘`\n " 
190           exit 0 ;;
191        3)
192            echo "输入的文件或者目录不存在!格式:如/mnt 应输入mnt,会恢复/mnt下所有的子目录权限!
193 如果需要恢复/下所有文件的权限信息,请直接回车!";;
194        4)
195            echo "GoodBey!Beby";;
196        esac;;
197        
198    *)
199        echo -e "\n你的选择有误,抱歉!\n";;
200    esac
201 fi

 

以上是关于ubuntu 脚本 修改权限之后还是无法执行如$hello 回复command not found 书上提示 check you PATH请问咋弄的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu 脚本运行权限

visudo修改权限后,无法自动执行脚本

ubuntu 怎么修改文件的权限? 百度看了下 说点击右键选择属性-权限。但是不行。

linux文件权限误修改之后如何恢复

ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2linux 如何修改只读文件 3ubuntu安装

在ubuntu中 怎么给脚本文件添加执行的权限 ?