web-dev-qa-db-ja.com

bash:/ root / bin / hello_world:権限が拒否されました

CentOS 7を使用しています。

  1. 私は最初のbashスクリプトを次のように記述しました。

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

    hello_worldとして保存しました

  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エラーが発生しました。

3
Dean Zhang

bash ~/bin/hello_worldのように)スクリプトを明示的なインタープリターで実行せずに実行可能にするには、スクリプトファイルに「実行可能ビット」が設定されている必要があります。これはchmodで行われます(そのマニュアルを参照):

chmod u+x ~/bin/hello_world

これにより、ファイルの所有者の実行可能ビットが設定されます。

または、

chmod +x ~/bin/hello_world

これにより、現在のumaskに従って実行可能ビットが設定されます。 umask022(一般的なデフォルト)であるとすると、すべてのユーザーが実行可能になります。


実行したsourceステップは意味がなく、エラーメッセージが表示されているはずです(ディレクトリを取得できません)。

新しいPATHの設定を「永続的」にする必要がある場合は、export PATH行をシェルの起動ファイル(bashをインタラクティブシェルとして使用している場合は~/.bashrc)に追加します。


また、対話型のルートプロンプトでの作業は避けてください。テストと探索には特権のないユーザーアカウントを使用し、管理タスクを実行する必要がある数回はそのアカウントのSudoを使用します。

5
Kusalananda