2017-06-13 7 views
0

スクリプトを使用してユーザーのシェル変数を変更する適切な方法は、使用するシェルによって異なります。例えば、スクリプトを使用してユーザーシェルを変更しますか?

GITSHELL=/bin/bash 
if [ GITSHELL = $SHELL ] 
then 
chsh git -s /usr/bin/git-shell 
else 
chsh git -s /bin/bash 

明らかにこれにはいくつかの問題があります。私はこれをどのように語るかわからない A:rootとして実行しても、gitのシェルをrootの代わりに呼び出すか、ステートメントのどこかでsuを使用するか、 B:gitとして実行し、su -c rootで変更する最初の後にgitのシェル?

目的は、一時的にフォルダを作成してgit init --bareを実行する必要があるときに、gitのシェルをbashに変更するスクリプトを実行することです。そして、セキュリティ上の理由からシェルをgit-bashに戻すためにスクリプトを再実行します。 これは可能ですか?これについては別の方法で行ってください。

答えて

1

ユーザが環境変数によって制御され、その決定を下すようにします。ただ、このようなあなたのスクリプトを書く:明示的に上書きしない限り、今

: ${GITSHELL:=/usr/bin/git-shell} 

git -s "$GITSHELL" 

、あなたのスクリプトは、/usr/bin/git-shellを使用します。

$ ./script.sh      # use /usr/bin/git-shell 
$ GITSHELL=/bin/bash ./script.sh # use /bin/bash 
関連する問題