echo $PATH
ターミナルウィンドウにある場合は、以下が出力されます。
/home/charles/anaconda3/bin:
/home/charles/anaconda3/condabin:
/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
/usr/local/games:/snap/bin:/snap/bin:
/home/charles/.emacs.d/bin
ただし、root以外のスクリプトを実行すると、次のようになります。
#!/bin/sh
echo $PATH
私のホームディレクトリのパスではなく、ルートパスのみを出力します。
/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
/usr/local/games:/snap/bin:/snap/bin
spyder
次のスクリプトで実行しようとしています。
$ which spyder
/home/charles/anaconda3/bin/spyder
スクリプトに自分のホームディレクトリのパス部分を認識させる方法はありますか?
解決済みemacs
:パスにおよびを追加するコードをからに移動しましたanaconda
。~/.bashrc
~/.profile
答え1
スクリプトはサブシェルで実行されます。つまり、対話型/ログインシェルによって作成されます。サブシェルは、スクリプト/プログラムを実行するための明示的な目的で作成されたシェルです。サブシェルのルールの1つは、以下を介してアクセスできることです。「父の皮」、しかしいいえローカル変数。
これは/home/...
変数が次のようになることを示しています。地元の変数、つまりどこかに/何でも設定するという意味です。おそらく~/.bashrc
?
解決策は、スクリプトでローカルPATH変数を宣言する必要があることです。次のようにこれを行うことができます。
export PATH="$PATH:/home/charles/anaconda3/bin:/home/charles/anaconda3/condabin:/home/charles/.emacs.d/bin"
道は今です地元のスクリプト/サブシェルに保存され、グローバル変数に伝播されません。