Configurer drush

 Une fois drush installé pour l'utiliser il faut être dans un répertoire de l'arborescence de drupal pour qu'il détecte les modules installés (et donc leur commandes) .

L'exécution simple de la commande drush le mentionne en fin de message :

$ drush 
Drush Commandline Tool 9.2.1

Run `drush help [command]` to view command-specific help.  Run `drush topic` to read even more documentation.

 Available commands:                                                                                                
 _global:                                                                                                           
   help                                 Display usage details for a command.                                        
   list                                 List available commands.                                                    
   browse                               Display a link to a given path or open link in a browser.                   
   runserver (rs, serve)                Runs PHP's built-in http server for development.                            
   version                              Show Drush version.                                                         
   updatedb (updb)                      Apply any database updates required (as with running update.php).           
   generate (gen)                       Generate boilerplate code for modules/plugins/services etc.                 
   config:pull (cpull)                  Export and transfer config from one environment to another.                 
   pm:security (sec)                    Check Drupal Composer packages for pending security updates.                
   entity:updates (entup)               Apply pending entity schema updates.                                        
   updatedb:status (updbst)             List any pending database updates.                                          
   user:login (uli)                     Display a one time login link for user ID 1, or another user.               
   drupal:directory (dd)                Return the filesystem path for modules/themes and other key folders.        
 cache:                                                                                                             
   cache:get (cg)                       Fetch a cached object and display it.                                       
   cache:clear (cc)                     Clear a specific cache, or all Drupal caches.                               
   cache:set (cs)                       Cache an object expressed in JSON or var_export() format.                   
   cache:rebuild (cr, rebuild)          Rebuild a Drupal 8 site.                                                    
 core:                                                                                                              
   core:status (status, st)             An overview of the environment - Drush and Drupal.                          
   core:rsync (rsync)                   Rsync Drupal code or files to/from another server using ssh.                
   core:execute (exec, execute)         Execute a shell command. Usually used with a site alias.                    
   core:init (init)                     Enrich the bash startup file with bash aliases and a smart command prompt.  
   core:topic (topic)                   Read detailed documentation on a given topic.                               
   core:edit (conf, config)             Edit drushrc, site alias, and Drupal settings.php files.                    
 php:                                                                                                               
   php:eval (eval, ev)                  Evaluate arbitrary php code after bootstrapping Drupal (if available).      
   php:script (scr)                     Run php a script after a full Drupal bootstrap.                             
 site:                                                                                                              
   site:install (si, sin)               Install Drupal along with modules/themes/configuration/profile.             
   site:set (use)                       Set a site alias that will persist for the current session.                 
   site:alias (sa)                      Show site alias details, or a list of available site aliases.               
   site:alias-convert (sa-convert, sac) Convert legacy site alias files to the new yml format.                      
   site:ssh (ssh)                       Connect to a Drupal site's server via SSH.                                  
 sql:                                                                                                               
   sql:connect                          A string for connecting to the DB.                                          
   sql:create                           Create a database.                                                          
   sql:drop                             Drop all tables in a given database.                                        
   sql:cli (sqlc)                       Open a SQL command-line interface using Drupal's credentials.               
   sql:query (sqlq)                     Execute a query against a database.                                         
   sql:dump                             Exports the Drupal DB as SQL using mysqldump or equivalent.                 
   sql:sync                             Copy DB data from a source site to a target site. Transfers data via rsync. 

 ! [NOTE] Drupal root not found. Pass --root or a @siteAlias in order to see Drupal-specific commands.                  

Se placer dans le répertoire de drupal supprime le message mais nécessite encore de préciser l'url s'il n'y a pas de site par défaut.

Configurer drush permet entre autre d'éviter de préciser ce genre chose à chaque fois.

La première chose  à faire c'est de générer le squelette de la configuration avec la commande code:init de drush.
Vous n'êtes pas obligé de répondre oui à la demande de modification du fichier .bashrc.

$ drush core:init

 Modify /home/jeanseb/.bashrc to include Drush configuration files? (yes/no) [yes]:
 > 

 [notice] mkdir ["/home/jeanseb/.drush"]
 [notice] Writing to /home/jeanseb/.drush/drush.yml.
 [notice] Writing to /home/jeanseb/.drush/drush.bashrc.
 [ok] Copied Drush bash customizations to /home/jeanseb/.drush/drush.bashrc
 [notice] Writing to /home/jeanseb/.drush/drush.prompt.sh.
 [ok] Copied Drush prompt customizations to /home/jeanseb/.drush/drush.prompt.sh
 [notice] Writing to /home/jeanseb/.bashrc.
 [ok] Updated bash configuration file /home/jeanseb/.bashrc
 [ok] Start a new shell in order to experience the improvements (e.g. `bash`).
 11/11 [============================] 100%

Cette commande créé le répertoire .drush dans le répertoire home et y installe les fichiers de configuration.

Modifier les options dans drush.yml pour spécifier les options par défaut ne fonctionne pas

# This section is for setting global options.
options:
  # Specify the base_url that should be used when generating links.
  # Not recommended if you have more than one Drupal site on your system.
  uri: 'http://example.com/subdir'

  # Specify your Drupal core base directory (useful if you use symlinks).
  # Not recommended if you have more than one Drupal root on your system.
  root: '/home/USER/workspace/drupal-6'

  # Enable verbose mode.
  verbose: true

J'ai donc choisi pour contourner le problème de passer par la définition d'un alias appelé défault.
Pour cela j'ai créé dans le répertoire ~/drush un répertoire site.
Puis le fichier site.default.site.yml suivant :

common:
  root: '/home/www-data'
  uri: 'http://localhost'

Ensuite il faut faire un "drush use @default" en début de session,  pour éviter cela j'ai modifié le fichier drush.bashrc pour ajouter la commande (après les alias)  :

alias q='drush sql:query'

# Modification pour utiliser l'alias par defaut
drush use @default

# Overrides for standard shell commands. Uncomment to enable.  Alias

Notez que si vous avez refusé de modifier automatiquement le fichier .bashrc il vous faudra y ajouter la commande drush use.

Et voila une solution qui permet de se débarrasser du message " ! [NOTE] Drupal root not found. Pass --root or a @siteAlias in order to see Drupal-specific commands."