質問編集履歴

1 一部文言を修正「文字列を削除する」→「文字列を含む行を削除する」

hirooze

hirooze score 7

2018/02/09 00:59  投稿

shellスクリプトで.bash_profileの一部PATHを削除したい
### 前提・実現したいこと
#### 前提
Shellスクリプト で Uninstall.sh を作成しています。
インストールで入力したPATHを削除したいと考えています。
PATHは、「.bash_profile」の最下部に入力されています。
下記がインストール時のコマンドです。
```bash
$ echo 'export PATH=$PATH:$HOME/.origin/bin' >> ~/.bash_profile`
```
#### 実現したいこと
「.bash_profile」に、特定の文字を含む行があった場合、
そのため、現在下記コードを書いてみました。
```bash
path=`grep origin $HOME/.bash_profile`
if [[ `grep origin $HOME/.bash_profile` ]] ; then
sed -i "s/$path//g"
source ~/.bash_profile
else
:
fi
```
### 発生している問題・エラーメッセージ
発生したエラーメッセージは、下記の通りです。
```bash
sed: -e expression #1, char 37: unknown option to `s'
```
恐らく、sed の条件式の中に半角スペースが混じってしまい、
エラーが出てしまっているのかと思っています。
ただ、PATHを外から消したいのですが、他の手段が思い付きません。
### 試したこと
* if [-z 〜〜]と変更してみましたが、ファイル名を対象としてしまったため、条件に引っ掻からず。
* sed -i "s/$path//g"のsオプションを消したりしましたが、できませんでした。
  • sh

    566 questions

    shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る