0

私は bash が初めてで、作成しようとしているコードの問題を解決しようとしています。

私は自分のユーザー名で端末にいて、bashに接続しています

USER$  
USER$ bash  
bash$

今、bash でいくつかの変数を保存しています fe:

i=2   
k=2   
let p=$k*$i

これらの変数を bash 関数の外で使用したい

bash$exit   
USER$

しかし今、変数はそこにありません

エクスポートを使用してみましたが、実際には機能しませんでした。ur help、tnx を使用できます

4

3 に答える 3

3

ありえない。このように親プロセスに環境変数を設定することはできません。

于 2012-05-28T05:46:24.907 に答える
2

DOS バッチ ファイルとは異なり、Unix シェル スクリプトは呼び出しシェルの環境に直接影響を与えることはできません。

You could consider using the . (dot) or source command to read and execute the script in the context of the calling shell. This means that changes made in the script do affect the environment (in general; you can still run into issues with sub-shells).

The other alternative is to have the script that sets the variables write the values in name=value format into a file which the calling script then reads (with . or source again).

于 2012-05-28T05:49:42.403 に答える
1

.profile従来の解決策は、設定をorに追加する. bashrcことです。どちらを使用するかは、特定のニーズとローカルの Bash 構成によって異なります。私の最初の推奨事項は.profileですが、このファイルは共有されているため、バシズムを避ける必要があります(たとえばsh、いいえ)。let

より具体的なニーズについては、コマンドをファイルに入れ、source必要なときにそれを実行してください。現在の値でファイルを更新する簡単なスクリプトを作成することもできます。

# source this file to update $HOME/stuff

cat<<HERE>$HOME/stuff
i='$i'
k='$k'
p='$p'
export i k p
HERE

リモート システムに接続するときに変数を保持するには、接続に使用しているツールのドキュメントを参照してください。たとえばssh、リモート セッションの開始時にローカル システムから環境変数をインポートするための構成オプションがあります。

于 2012-05-28T06:35:33.753 に答える