web-dev-qa-db-ja.com

シェルスクリプトのソースファイルが保存されていません

シェルスクリプトをビンに保存しました(自分で作成)。プログラムを実行するとき、。/がスクリプトを実行しないようにするには、PATH変数で指定されたディレクトリの1つにスクリプトをコピーする必要があります。作成されたbinディレクトリはパスリストにありません。そのため、PATHリストに追加するには:

export PATH=~/bin:"$PATH"

ただし、このディレクトリはPATHリストに保存されません。新しいターミナルウィンドウを開くと、スクリプトを実行するために再度エクスポートする必要があります。 PATHリストに永久に追加するにはどうすればよいですか?また、スクリプトを現在のPATHリストディレクトリに移動しようとすると、PERMISSION DENIEDと表示されます。 rootユーザーになることで移動する必要がありますか?

2
Rohan

export PATH=~/bin:"$PATH"~/.profileファイルに追加できます。一番下に追加し、保存してからSSHに再接続します。

または、この変更をすべてのユーザーに対してシステム全体に適用する場合は、/etc/environmentのパスを編集できます。

3
Alex Vanino

これは私のために働いた。

.bashrc gedit ~/.bashrcを開きます

テキストエディタが開きます。

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

これを貼り付けて、.bashrcを編集します。テキストエディターを閉じた後、source ~/.bashrc

許可が拒否された場合は、スクリプトが実行可能な形式ではないことを意味します。 chmod 755 program_nameこれで動作するはずです。新しいターミナルを開くと動作します。

2
Rohan

カスタムホームディレクトリパスを$ PATHに追加します

  1. ~/.profileを編集します
  2. すべての$ PATH関連の変数の後に次の行を追加します。

    export PATH="$PATH:$HOME/your-home-dir-path"

  3. ファイルを保存。

  4. ログアウト/再起動します。

これを~/.profileに追加すると、ターミナルとテキストモードへのこの変更が有効になります。

カスタムパスが~/binまたは~/.local/binである場合に備えて!!!

すでに質問のコメントで述べたように、これらの場所はすでにUbuntuのPATHに含まれています!

次のことができます。

  1. ディレクトリを作成します(例:~/bin)。
  2. スクリプトをそれにコピーします。
  3. 次のコマンドで許可を実行可能に変更します。

    chmod +x ~/bin/script.sh

  4. ログアウト/ログイン。または、source ~/.profileを実行できます

すでに述べたように、〜/ .profileには既に次のようなものが含まれているはずです。

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

ただし、インタラクティブな非ログインbashシェルを起動しているようです(つまり、ssh経由で接続していないが、デスクトップ環境から端末を起動しています) 〜/ .profileを読み取らず、代わりに〜/ .bashrcが読み取られます 。ここで説明します

〜/ .bashrcを変更してパスを追加したり、 here で説明されているように非ログインシェルの〜/ .profileを読み取ることができますが、ログアウト/ログインする場合はJacobが述べたように、これは不要です。

ログインシェルと非ログインシェルの違いを理解するには、この answer を参照してください。

1
Martin K

走るとき

export PATH=~/bin:"$PATH"

pATH環境変数を設定し、実行中の親端末にエクスポートしています。 「新しいPATH変数はこれだ、Wordを広める」と言っているようなものです。動作しますが、コンピューターを再起動すると、PATHは構成されたものに戻ります。変更を永続的にするには、ホームフォルダーの.profileファイルを編集する必要があります。通常、これは次のとおりです。

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi

存在する場合、$ HOME/binフォルダーが自動的に含まれます。しかし、そうでない場合は、上記のコマンドを追加するか、次のいずれかを追加するだけです。

    export PATH="$PATH:$HOME/bin"

ファイルに追加すると、このフォルダーはユーザーのすべてのセッションのPATHに含まれます。

/ usr/binディレクトリに書き込むにはルート権限が必要ですが、.profileファイルを変更する場合は必要ありません。

0
IanC