2017-04-21 7 views
0

私はGNU bash、バージョン4.3.11(1)-release(x86_64-pc-linux-gnu)を使用しています。setを使ってシェル変数を変更するには?

$set | grep SHELL 
SHELL=/bin/bash 
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor:verbose 

ここで、SHELL変数の値を/ bin/dashに変更したいとします。だから私は試しました

$set SHELL=/bin/dash 
set SHELL=/bin/dash 
$set | grep SHELL 
SHELL=/bin/bash 
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor:verbose 
_=SHELL=/bin/dash 

私はまたいくつかの他の構文を試しました。しかし、SHELL変数の値は変わりません。私は2つの質問があります: 1. SHELL変数を変更するための設定方法 2. _ = SHELL =/bin/dashは何ですか?

+0

「export SHELL」 – luoluo

答えて

0
chsh -s {shell-name} {user-name} 

使用これ、あなたのデフォルトのシェルを変更したい場合は

+0

本当に設定できるものを追加してください。 – drdot

+0

シェルのオプションとシェルの位置パラメータの値を設定または解除します。シェル自体は変更されません。あなたは詳細な説明のためのリンクを確認することができます。 [リンク](http://linuxcommand.org/lc3_man_pages/seth.html) –

2

をダッシュ​​する組み込みコマンドsetはオフなのトレース回すなどの目的の数、(set -x)または(set +x)を持っています。あなたはechoからの出力としてSHELL=/bin/dashを取得します

set SHELL=/bin/dash 
echo "$1" 

:、$1"[email protected]"、などそして、それはあなたが何をやったかだ - しかし、それはまた、位置パラメータを設定します。変数を設定するには

、あなたは変数を設定する - 任意のキーワードを指定せず:

SHELL=/bin/dash 

$_は、前のコマンドの最後の引数の値です。たとえば:

$ cp oldfile.c newfile.c 
$ vim $_ 
…now editing newfile.c 
$ 

は、これは便利ですが、あなたはそれが期待していなかったとき、あなたはまた$_変化するので問題で自分自身を上陸することができます。

CシェルまたはCシェルの派生物を使用するのに間違っている場合は、set variable=valueを使用して変数を設定します。

0

シェルのWindows CMDシェルまたはUNIX cshシェルでは、setコマンドが変数を設定します。

しかし、bashdashなどのBourneスタイルのシェルでは、特に指定することなく変数を設定できます。 setコマンドが実際に全く異なる何かを意味

MY_VARIABLE=some_value 

:環境変数を設定するのと同じくらい簡単です。これは、シェルスクリプトでは、対話シェルではなく、ほとんど役に立ちます。これをシェルスクリプトで使用して、「定位置パラメータ」(第1引数、第2引数など)を設定します。トレースモード(-x)、またはフェイルオンエラー(-E)のようなシェルオプションを設定することもできます。

関連する問題