bash: /root/bin/hello_world: 权限被拒绝

bash: /root/bin/hello_world: 权限被拒绝

我使用的是CentOS 7。

  1. 我像这样编写了第一个 bash 脚本。

    #!/bin/bash
    echo 'this is my first code'
    

    我把它另存为你好世界

  2. 我在我的根主目录中创建了一个目录。

    mkdir bin
    
  3. 然后我将脚本移至该~/bin目录。

  4. 然后我这样做了:

    export PATH=~/bin:"$PATH"
    source ~/bin
    
  5. 然后我尝试使用以下命令运行脚本。

    hello_world 
    

但我没有看到,this is my first code但我得到了一个bash: /root/bin/hello_world: Permission denied错误。

答案1

为了使脚本可以在不使用显式解释器执行的情况下执行(如 中所示bash ~/bin/hello_world),脚本文件必须设置其“可执行位”。这是通过以下方式完成的chmod(请参阅其手册):

chmod u+x ~/bin/hello_world

这为文件所有者设置了可执行位。

或者,

chmod +x ~/bin/hello_world

这根据您当前的umask.假设您umask022(常见的默认值),这将使其对所有用户都可执行。


您所做的步骤source是无意义的,应该给您一条错误消息(您无法获取目录)。

如果您需要将新设置设置PATH为“永久”,则将该export PATH行添加到 shell 的启动文件中(~/.bashrc如果您使用bash交互式 shell)。


另外,避免在交互式 root 提示符下工作。使用非特权用户帐户进行测试和探索,并sudo在需要执行管理任务的少数情况下使用该帐户。

相关内容