質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1281閲覧

Laravel Sail の起動に際して ./vendor/bin/sail コマンドにエイリアスを付与して機能させたい

sasame

総合スコア2

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

1クリップ

投稿2023/03/01 15:09

実現したいこと

./vendor/bin/sail upコマンドにエイリアスをつけ sail up として起動させたい。

前提

Laravel Sailを導入しコマンドでDockerコンテナを立ち上げようとしています。
BashでUbuntu(WSL2)に入り、プロジェクトルート直下で vimから.bashrcを編集し

alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

を最終行に追加しました。

しかしsource ~/.bashrc を叩いても、ターミナルを再起動させても
sail up で立ち上げることができません。bashコマンドを打った時に

-bash: alias: sail:not found -bash: alias: =[ -f sail ] && bash sail || bash vendor/bin/sail : not found

と出てくるので設定が反映されていないのだと思いますが、
公式(https://laravel.com/docs/10.x/sail#starting-and-stopping-sail)
をみても、そのほかの技術記事群を見てもやり方自体は同じものが出てくるので、何がダメなのか不明です。

エイリアスを設定せずに./vendor/bin/sail upと打つと普通に動きます

発生している問題・エラーメッセージ

上記のnot foundに加えてsail up を打つと

Ranger vs. Drake 0: American Ranger (7 pts) (available) 1: British Drake (6 pts) (available)

というLinuxコマンドのゲーム(?)が表示されます

該当のソースコード

以下vim で編集した .bashrcの中身です。

# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options HISTCONTROL=ignoreboth # append to the history file, don't overwrite it shopt -s histappend # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) HISTSIZE=1000 HISTFILESIZE=2000 # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize # should be on the output of commands, not on the prompt #force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' # Add an "alert" alias for long running commands. Use like so: # sleep 10; alert alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' # Alias definitions. # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion alias sail = '[ -f sail ] && bash sail || bash vendor/bin/sail'

長いですが、追加したのは最後の一行だけです。

試したこと

・Windows PowerShellでも同様に試しましたが、動かず
・ホームディレクトリでも同様に試しましたが、動かず(そもそも.bashrc自体なかったので作りました)
・.bash_profileを作って試しましたが、動かず

補足情報(FW/ツールのバージョンなど)

Windows10
Laravel Sail
PHP 8.2.3
Docker desktop 4.16.3
Ubuntu 20.04.4 LTS

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2023/03/02 02:06

alias sail = '[ -f sail ] && bash sail || bash vendor/bin/sail' の部分ですが、= の前後のスペースを削除してください。
sasame

2023/03/02 14:36

ご指摘ありがとうございます。 問題の箇所を修正すると、きちんと設定できました!
guest

回答1

0

ベストアンサー

aliasコマンドは、
alias aa=ls bb=date
のように一度に複数のaliasを定義できます。
またalias aa bb cc=pwdaabbのalias定義内容を表示して、ccを定義するという意味です。

alias sail = '[ -f sail ] && bash sail || bash vendor/bin/sail'
だと、
sailというaliasの定義内容を表示しろと言われたがそんな定義は無い
=というaliasの定義内容を表示しろと言われたがそんな定義は無い
'[ -f sail ] && bash sail || bash vendor/bin/sail'というaliasの定義内容を表示しろと言われたがそんな定義は無い
ということになります。

お書きのエラーメッセージからすると、
alias sail ='[ -f sail ] && bash sail || bash vendor/bin/sail'
=の前だけに空白を書いたのでしょうね。

多くのプログラミング言語では、単語の途中等以外なら空白を入れても入れなくても意味が変わらないことが多いですが、シェル(やWindowsのコマンドプロンプト)では空白の有無で意味が変わることがしばしばあります。

投稿2023/03/02 04:23

otn

総合スコア84553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sasame

2023/03/02 14:34

ご回答ありがとうございます。 ご指摘の通り、空白を除くと無事エイリアスが設定できました。 シェルの空白についてはまったく知識がなかったので、気が付きませんでした。 以後気をつけたいと思います。
otn

2023/03/02 14:42

空白を入れなくてはいけない場所、入れてはiけない場所、それぞれありますが、 man bashの通りに書けば良いです。 (エラーになってから見るのでも良いかと思いますが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問